HttpArena
Frameworks

fit

Infrastructure · Go

fit, a reverse proxy, static file server and API gateway built on fib, with a Go handler module compiled in as fit build does: httparena answers /baseline11 and /baseline2, httparena_json /json/{count}, serializing the body per request from the dataset read when the config is loaded. /pipeline is fit's respond handler and /static/* its static handler, which keeps small files in memory, revalidates them against the disk every second and serves the .br/.gz twins on disk off Accept-Encoding. One process, fib's default engine settings, from a .conf config: HTTP/1.1 on :8080, h1 over TLS on :8081, h2c on :8082, h2 and h3 (fib's own QUIC) on :8443, TLS on crypto/tls.

Achievements

🥇 2 Gold · 🥈 2 Silver · 🥉 4 Bronze. Top three of a field, taken in this entry's own league: the family composite, the same composite among entries written in the same language, and each test profile it is scored on. Every field is the one the badges publish, so a medal and a badge always say the same thing. How medals are awarded.

MedalAwardFieldRank
🥇 GoldTest profileConnection · Pipelined1 of 7
🥇 GoldTest profileHTTP/3 · Static1 of 4
🥈 SilverFamily compositeComposite · HTTP/32 of 4
🥈 SilverTest profileWorkload · Static TLS2 of 5
🥉 BronzeFamily compositeComposite · HTTP/1.13 of 7
🥉 BronzeTest profileHTTP/2 · Baseline3 of 6
🥉 BronzeTest profileHTTP/2 · Static3 of 6
🥉 BronzeTest profileHTTP/3 · Baseline3 of 4

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, less 2.5% for each of routing, middleware, request and response the entry does not do for you - its completeness factor, which the WebSocket and gRPC families do not carry. The field is this entry's own league: engines and reverse proxies are scored apart from frameworks. How it works.

FamilyRankComposite
HTTP/1.13 of 73279
HTTP/24 of 6739
HTTP/32 of 41443

Every result

Alpha Round, 16 runs. Requests per second is the best of three; latency, CPU and memory come from that run.

CategoryProfileConnsReq/secAvgp99CPUMemory
ConnectionBaseline4,0962,375,8661.72ms10.80ms5723.7%205MiB
ConnectionPipelined4,0969,891,5606.61ms55.00ms5636.6%295MiB
ConnectionShort-lived4,0961,566,7942.60ms7.79ms4634.0%163MiB
WorkloadJSON TLS4,096520,16618.78ms384.95ms5109.0%265MiB
WorkloadStatic TLS1,024872,8624.79ms271.83ms5424.6%173MiB
HTTP/2Baseline2566,175,1804.01ms46.97ms6144.2%238MiB
HTTP/2Baseline1,0246,237,37716.05ms235.41ms6333.4%615MiB
HTTP/2Static256532,91510.35ms1.65s4415.6%419MiB
HTTP/2Static1,024508,97030.00ms2.86s4654.9%999MiB
HTTP/2Baseline (h2c)2567,865,4813.07ms28.35ms6358.7%235MiB
HTTP/2Baseline (h2c)1,0248,273,05011.70ms125.55ms6315.2%600MiB
HTTP/2Baseline (h2c)4,0967,980,41249.75ms1.02s6204.5%1.7GiB
HTTP/2JSON (h2c)1,024949,03633.16ms2.19s5743.8%1.8GiB
HTTP/2JSON (h2c)4,096897,660136.99ms2.75s5251.4%3.9GiB
HTTP/3Baseline643,823,767862us4.89ms5278.8%162MiB
HTTP/3Static64811,2424.39ms18.25ms5749.0%343MiB

Compared with

The Go entries around fit on the HTTP/1.1 composite, and the one leading them. The last column shows every profile side by side.

EntryCompositevs fit
fiber-tuned6020+84%head to head
fnet-h14573+39%head to head
go-fasthttp3515+7%head to head
echo2121-35%head to head
gin2109-36%head to head

Compare fit with any Go entry · Compare fit with any entry, in any language · Every Go entry, ranked

Results updated · How the benchmark is run · The machine · Add or fix an entry