22
loading...
This website collects cookies to deliver better user experience
/hello/{name}
- This just simply returns Hello {name}!
/hello/error
- This throws a custom RuntimeException
which must be handled as a 400 Bad Request and return Oh no!
.adoptopenjdk/openjdk16:alpine
. Where possible this will use the recommended testing unit approach to verify the endpoints.jib:dockerBuild
, 10 times and get the mean average. This will include a test for each of the endpoints using approach recommended in their documentation,docker images
,/hello/bob
endpoint using JMH using average time.⚠️ As ever, take microbenchmarks with a pinch of salt. There are so many factors affecting performance that although these results may be indicative, they may also no be true for the types of workloads you have. Therefore, your mileage may vary.
Test | Dropwizard | Helidon MP | Helidon SE | Micronaut | Quarkus | Spring WebFlux | Spring WebMVC | Vert.x |
---|---|---|---|---|---|---|---|---|
Build Speed (s) | 11.954 | 9.574 | 11.790 | 11.322 | 22.605 | 14.364 | 11.840 | 9.345 |
Image Size (MBy) | 382 | 376 | 368 | 376 | 375 | 381 | 383 | 370 |
Start Speed (ms) | 1,665 | 1,573.4 | 424.9 | 753.5 | 665.8 | 1,557.8 | 1,774.5 | 374.6 |
RTT (us/op) | 1856.903 ± 47.301 |
1986.689 ± 34.877 |
1690.168 ± 80.618 |
1730.723 ± 64.688 |
1821.905 ± 124.261 |
1857.136 ± 82.583 |
2045.205 ± 78.650 |
1513.232 ± 74.767 |
ℹ️ Quarkus was the only framework that mandated using it's own wrapper of Jib. I tried using Jib directly but kept complaining about missing pom.xml
. This also meant that I had issues configuring offline mode causing build failures.
ApplicationContext
managing the bean lifecycle. Either way from difference between the best and worst was just 531 microseconds (0.5 milliseconds). For ReST traffic, you're unlikely to notice any of difference unless you're serving HUUUUUGE amounts of traffic.--offline
or using mirrors). However, with Quarkus, with their own Jib wrapper, that's not possible,pom.xml
to use spaces (yes, I'm that Maverick Renegade that uses tabs!), ℹ️ Code for this is available here. If I've made some glaring omissions, please do point them out.
io_uring
support are exciting which should generate some serious performance improvements. However, in the meantime I'm going to look much closer at Micronaut and Dropwizard, unless I raw performance which Vert.x would be high on my list.