# JAX-RS compliant kernels test

## Build time (for reference only)

| Kernel                   | time    |
| ------------------------ | ------- |
| quarkus-resteasy-jackson | 1.463 s |
| quarkus-resteasy-jsonb   | 0.943 s |
| jersey-grizzly2          | 1.029 s |
| jersey-jdk-http          | 0.350 s |
| jersey-simple-http       | 0.370 s |
| jersey-jetty             | 0.465 s |
| jersey-netty             | 0.596 s |
| jersey-netty             | 0.596 s |
| jersey-netty             | 0.596 s |
| jersey-netty             | 0.596 s |
| rawnetty                 | 0.659 s |
| jooby-netty              | 0.497 s |
| jooby-jetty              | 0.360 s |
| jooby-undertow           | 0.410 s |
| resteasy-jdk-http        | 0.319 s |
| resteasy-netty           | 0.603 s |
| resteasy-reactor-netty   | 0.813 s |
| resteasy-vertx           | 0.648 s |
| resteasy-undertow        | 0.568 s |
| cxf-jetty                | 0.572 s |
| cxf-netty                | 0.618 s |
| cxf-undertow             | 0.691 s |

## JDK performance averages

| version | libc | jdk               | avg(req/sec)     | % worse |
| ------- | ---- | ----------------- | ---------------- | ------- |
| 17      | glib | azul@zulu-openjdk | 2652190.57575758 | 0.00%   |
| 17      | glib | openjdk           | 2563225.91666667 | -3.35%  |
| 17      | glib | eclipse-temurin   | 2556843.05555556 | -3.60%  |
| 11      | musl | azul@zulu-openjdk | 2543225.91666667 | -4.11%  |
| 17      | musl | amazoncorretto    | 2541763.11111111 | -4.16%  |
| 17      | musl | eclipse-temurin   | 2531755.72727273 | -4.54%  |
| 17      | musl | azul@zulu-openjdk | 2524027.27777778 | -4.83%  |
| 17      | glib | amazoncorretto    | 2523101.08333333 | -4.87%  |
| 11      | glib | amazoncorretto    | 2518183.84615385 | -5.05%  |
| 11      | musl | amazoncorretto    | 2516931.75       | -5.10%  |
| 11      | glib | azul@zulu-openjdk | 2513074.48484848 | -5.25%  |
| 11      | musl | eclipse-temurin   | 2484351.47222222 | -6.33%  |
| 11      | glib | eclipse-temurin   | 2483621.30555556 | -6.36%  |
| 11      | glib | openjdk           | 2459857          | -7.25%  |
| 17      | musl | openjdk           | 2299278          | -13.31% |

# Rounds

## Round I

Run tests with 100 connections. These modules performed as shit:

- jersey-jdk-http
- jersey-simple-http
- resteasy-jdk-http

rawnetty is not that representative afterall - no need to loose time. openjdk-11 with alpine kernel failed to start test (not sure 'bout it).

## Round II

bad throughput

- jersey-jetty

bad mean and diviations is too high

- cxf-jetty
- cxf-undertow

diviation is too high

- jooby-jetty
- resteasy-netty

bad mean response time

- jersey-netty

bad compatibility (too many backfire incudents)

- quarkus-resteasy-jackson

bad mean response time and problems with compatibility

- jersey-grizzly2

## Round III

survivor jdks (for resteasy-vertx):

- eclipse-temurin:17-alpine
- amazoncorretto:11-alpine
- amazoncorretto:17-alpine

Best performance:

- resteasy-vertx + amazoncorretto:11-alpine
- jooby-undertow + 17-alpine

Best stability:

- resteasy-vertx + amazoncorretto:17-alpine
- jooby-undertow + 17-alpine
