Performance evidence
Lounge's performance case is promising, but workload-dependent. These are local engineering measurements, not a comparison with competing frameworks or a production capacity guarantee.
Counted HTTP probe, September 4, 2026
On an Apple M4 Max (16 logical CPUs, 128 GiB), JDK 25.0.1, a single JVM handled a small JSON request that executed a task and incremented its value. Thirty-two clients issued 10,000 measured requests per repetition, after 4,000 warmup requests; five repetitions were taken. An independent counter verified that every measured engine request executed its handler. A 200 response by itself was not sufficient.
| Path | Acknowledgment mode, requests/sec | Full event mode, requests/sec |
|---|---|---|
| Quarkus ingress | 28,704 | 30,408 |
| Native direct ingress | 32,626 | 33,803 |
| Native tree ingress | 31,124 | 27,811 |
| Native tree with parallel decoding | 27,938 | 26,997 |
Median request latencies were roughly 0.8–1.0 ms. A fixed-response native HTTP control, which did not execute Lounge, reached 36,529 requests/sec. The values are medians across repetitions; small differences may reflect scheduling, JIT and measurement noise. This is a minimal task without a database, application authentication, remote services or realistic business work. Client and server shared one machine. Results predate the v18 failure/trace changes; rerun before sizing a deployment.
Waiting work and ordering
A separate simulated workload used 32 clients, 2,000 events and a 1 ms wait per handler. Overlapped admission processed about 23,773 events/sec versus 767 for serial admission when the flow did not read prior state. Moving a query to the start of the flow removed almost all of that benefit (654 versus 635 events/sec). Query visibility and per-group ordering constrain useful overlap. This improvement applies only where the edition and execution contract permit overlap.
Reproduce and extend
The engineering benchmark is HttpServerShootoutTest, enabled with -Dhttp.shootout=true in the complete developer source tree. Its dedicated fixture transforms the payload and counts executions. Keep role enforcement, envelope mode, group distribution, database durability, payload size, CPU/memory limits and client placement explicit when comparing results.
Before choosing production capacity, measure your actual application, including p95/p99 latency, memory growth, errors and recovery under load. A useful comparison should implement the same business operation on both runtimes, with equal correctness and durability requirements. The current results do not establish a performance advantage over another framework.