fasthttp
Engine · V · engine: epoll
fasthttp is a raw multi-threaded epoll HTTP server in V's standard library (non-blocking, SO_REUSEPORT, one worker per core). It uses fasthttp's zero-copy append handler (write the raw response straight into the connection's reused buffer), lock-free per-worker state (make_state), deterministic request framing that reassembles TCP-fragmented AND chunked requests (so baseline is now subscribed), and sendfile(2) for static bodies. JSON is built in a single allocation with precomputed prefixes (no per-request reflection); json-comp gzips on Accept-Encoding with a process-shared cache; static assets are streamed via sendfile with a preloaded MIME/size table; crud is an in-memory cache-aside (X-Cache MISS/HIT, invalidated on update); fortunes renders the DB rows + a runtime row with HTML escaping; async-db/crud/fortunes use the stdlib db.pg pooled Go-style DB (blocking queries on the worker thread — fasthttp has no async watch reactor yet). Built on pinned V master 84a76d791 (the fasthttp vanilla-architecture refactor, vlang/v#27771) with the default GC (Boehm). json-tls is not subscribed: the stdlib fasthttp server has no TLS backend.
Composite rank
Each profile of a family is worth 100 to the entry that leads it, and the composite is the sum over the family. The field is this entry's own league: engines and reverse proxies are scored apart from frameworks. How it works.
| Family | Rank | Composite |
|---|---|---|
| HTTP/1.1 | 16 of 34 | 159 |
Every result
Alpha Round, 20 runs. Requests per second is the best of three; latency, CPU and memory come from that run.
| Category | Profile | Conns | Req/sec | Avg | p99 | CPU | Memory |
|---|---|---|---|---|---|---|---|
| Connection | Baseline | 512 | 2,984,044 | 171us | 1.79ms | 6063.0% | 378MiB |
| Connection | Baseline | 4,096 | 3,271,479 | 1.25ms | 7.03ms | 5909.8% | 594MiB |
| Connection | Pipelined | 512 | 35,845,795 | 228us | 3.22ms | 6743.3% | 163MiB |
| Connection | Pipelined | 4,096 | 35,926,640 | 1.83ms | 7.40ms | 6462.1% | 330MiB |
| Connection | Short-lived | 512 | 2,156,962 | 224us | 1.73ms | 5574.7% | 555MiB |
| Connection | Short-lived | 4,096 | 2,516,707 | 1.56ms | 7.44ms | 5604.9% | 941MiB |
| Workload | JSON | 4,096 | 2,175,338 | 1.16ms | 8.48ms | 6182.2% | 748MiB |
| Workload | JSON Comp | 512 | 2,028,583 | 141us | 1.09ms | 6050.6% | 366MiB |
| Workload | JSON Comp | 4,096 | 2,467,521 | 1.34ms | 8.74ms | 6202.5% | 772MiB |
| Workload | JSON Comp | 16,384 | 2,369,043 | 6.39ms | 23.50ms | 6000.7% | 1.3GiB |
| Workload | Upload | 32 | 1,534 | 20.86ms | 130.50ms | 1659.9% | 6.5GiB |
| Workload | Upload | 256 | 862 | 154.52ms | 2.56s | 1059.6% | 7.8GiB |
| Workload | Static | 1,024 | 872,977 | 1.81ms | 105.70ms | 6472.8% | 243MiB |
| Workload | Static | 4,096 | 941,099 | 5.01ms | 148.10ms | 6217.2% | 440MiB |
| Workload | Static | 6,800 | 945,532 | 7.41ms | 117.71ms | 6250.6% | 532MiB |
| Database | Async DB | 1,024 | 6,428 | 157.61ms | 562.60ms | 5571.6% | 3.3GiB |
| Database | CRUD | 4,096 | - | 0us | 0us | 0.0% | 0MiB |
| Database | Fortunes | 1,024 | 185 | 2.46s | 5.00s | 1375.7% | 301MiB |
| Multi-endpoint | API-4 | 256 | 38,568 | 5.27ms | 33.20ms | 394.1% | 3.2GiB |
| Multi-endpoint | API-16 | 1,024 | 16,631 | 60.92ms | 319.10ms | 1771.0% | 3.7GiB |
How the benchmark is run · The machine · Add or fix an entry