lounge.

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.