# Migrating from Developing Asynchronous Multi-Threading Programs to Reactive Programs in Java
## 7 Evaluation of Results
### Performance Analysis
#### 7.2.3 Discussion of Results
The 90 th percentile response time was significantly lower for the reactive model, achieving 121 ms compared to 277 ms for the asynchronous model, an improvement of 56.3%. Throughput was 33.1% higher (8867 req/s vs. 6659 req/s). CPU usage remained comparable between the two models, with the reactive model recording 42.1% versus 40.7% for the asynchronous model. These results demonstrate the reactive model's ability to maintain low response times and high throughput under high-concurrency scenarios, making it well-suited for distributed systems requiring scalability and resource efficiency. In the second scenario, the reactive model demonstrated clear advantages over the asynchronous model across most metrics, particularly in terms of memory usage, response times, and throughput. At a low concurrency level of 10 users, the reactive model consumed 7.4% less memory than the asynchronous model (87 MB vs. 94 MB). CPU usage was also lower, reduced by 15.7% (8.6% vs. 10.2%). The average response time improved by 12.5% (7 ms vs. 8 ms), while the 90 th percentile response time remained the same for both models at 10 ms. Throughput was 6.9% higher for the reactive model (1060 req/s vs. 992 req/s). These results suggest that even under light loads, the reactive model is capable of achieving minor but consistent efficiency gains. At a mid-concurrency level of 250 users, the reactive model's advantages became more pronounced. Memory consumption was 10.9% lower (213 MB vs. 239 MB), and the average response time decreased by 33.9% (41 ms vs. 62 ms). The 90 th percentile response time improved by 61.2%, with the reactive model achieving 50 ms compared to 129 ms for the asynchronous model. Throughput was 49.8% higher for the reactive model (4998 req/s vs. 3335 req/s). Although CPU usage was slightly higher for the reactive model (31.3% vs. 30.8%), the performance improvements in response times and throughput outweighed this minor increase. At the peak concurrency level of 1000 users, the reactive model maintained substantial advantages. Memory consumption was reduced by 7.1% (366 MB vs. 394 MB). The average response time was 37.6% lower (153 ms vs. 245 ms), and the 90 th percentile response time improved by 34.4% (191 ms vs. 291 ms). Throughput was 47.1% higher for the reactive model, with 5446 req/s compared to 3704 req/s for the asynchronous model. CPU usage increased slightly for the reactive model (37.9% vs. 35.6%), but this did not detract from its overall performance gains. In the third scenario, the reactive model consistently demonstrated advantages in memory usage, response times, and throughput, particularly at mid to high concurrency levels. At a low concurrency level of 10 users, the reactive model reduced memory consumption by 12.9% (81 MB vs. 93 MB) and CPU usage by 16.8% (7.9% vs. 9.5%). The average response time was 11.1% lower for the reactive model (8 ms vs. 9 ms), while the 90 th percentile response time improved slightly (10 ms vs. 11 ms). Throughput was 2.7% higher for the reactive model (981 req/s vs. 955 req/s). These results suggest that the reactive model offers minor but consistent efficiency gains under light loads. At a mid-concurrency level of 250 users, the reactive model demonstrated more substantial improvements. Memory consumption was 10% lower (206 MB vs. 229 MB), while the average response time was comparable between the two models (71 ms vs. 73 ms). The 90 th percentile response time showed a significant improvement for the reactive model, reduced by 35.2% (105 ms vs. 162 ms). Throughput was 17.4% higher for the reactive model (3081 req/s vs. 2624 req/s). Although CPU usage was slightly higher for the reactive model (24.2% vs. 23.4%), the gains in throughput and response time made it the better performer at this level. At the peak concurrency level of 1000 users, the reactive model maintained a clear advantage across most metrics. Memory consumption was reduced by 13.7% (303 MB vs. 351 MB), and the average response time was 17.8% lower (231 ms vs. 281 ms).