HttpArena
Frameworks

fib-tuned

Experimental · Go · engine: fib · tuned configuration · completeness 4/4

The fib entry with its compression replaced: the JSON routes sit behind a compression middleware written in the entry on fib's middleware API (Context.OnResponse, as fib's own compress, around the routes through Router.With), coding brotli (andybalholm/brotli), zstd, gzip and deflate (klauspost/compress) as Accept-Encoding weighs them. Between codings a client weighs the same it picks gzip, then zstd, brotli and deflate, the order measured to cost least for the bytes saved on these 4-8 KB bodies. JSON responses are encoded with sonic, which Context.JSON calls as fib's JSONEncoder. It runs with GOGC=200. Everything else - prefork with a child for every two CPUs, fib's default configuration, listeners on 8080/8082/8081/8443 tcp+udp/9000, fib's Router and routes, gRPC through fib's grpc package, static through FileCache, TLS - is the fib entry's.

Achievements

🥇 6 Gold · 🥈 8 Silver · 🥉 5 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
🥇 GoldFamily compositeComposite · HTTP/31 of 5
🥇 GoldFamily compositeComposite · gRPC1 of 5
🥇 GoldTest profileEfficiency · Latency-10K1 of 8
🥇 GoldTest profileHTTP/2 · Baseline (h2c)1 of 6
🥇 GoldTest profileHTTP/3 · Baseline1 of 5
🥇 GoldTest profileHTTP/3 · Static1 of 4
🥈 SilverFamily compositeComposite · HTTP/22 of 7
🥈 SilverTest profileConcurrency · Async Delay2 of 7
🥈 SilverTest profileHTTP/2 · Baseline2 of 6
🥈 SilverTest profileHTTP/2 · JSON (h2c)2 of 6
🥈 SilverTest profileHTTP/2 · Static2 of 6
🥈 SilverTest profileWorkload · JSON Comp2 of 9
🥈 SilverTest profilegRPC · Unary2 of 5
🥈 SilverTest profilegRPC · Unary TLS2 of 5
🥉 BronzeFamily compositeComposite · HTTP/1.13 of 10
🥉 BronzeTest profileConnection · Short-lived3 of 10
🥉 BronzeTest profileEfficiency · Latency-1M3 of 8
🥉 BronzeTest profileWorkload · 8Gbit3 of 8
🥉 BronzeTest profileWorkload · JSON TLS3 of 9

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 107101
HTTP/22 of 73051
HTTP/31 of 52000
gRPC1 of 51922

Every result

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

CategoryProfileConnsReq/secAvgp99CPUMemory
ConnectionBaseline4,0963,136,1101.30ms2.56ms6341.3%467MiB
ConnectionPipelined4,09620,380,4283.21ms7.00ms6635.6%477MiB
ConnectionShort-lived4,0962,554,0161.57ms4.05ms6003.1%489MiB
ConcurrencyAsync Delay32,0001,825,75817.36ms30.70ms5560.7%2.2GiB
EfficiencyLatency-10K1,0249,98373.3us105.0us45.8%413MiB
EfficiencyLatency-1M1,024997,842114.0us196.0us3405.1%442MiB
EfficiencyLatency-500K/81,024449,686963647.1us2837504.0us792.4%75MiB
WorkloadJSON Comp4,096509,2218.02ms24.60ms6424.1%842MiB
WorkloadJSON Comp16,384506,00032.10ms55.40ms6156.8%5.7GiB
WorkloadJSON TLS4,0961,505,7282.78ms96.29ms6225.1%658MiB
Workload8Gbit51249,34690.1us117.0us232.9%474MiB
WorkloadStatic TLS1,0241,225,298675.21us21.21ms5673.7%567MiB
DatabaseAsync DB1,024230,9133.93ms21.10ms4259.3%674MiB
HTTP/2Baseline2565,636,4722.22ms15.00ms2296.4%811MiB
HTTP/2Baseline1,0245,511,1798.62ms108.31ms2323.3%1.2GiB
HTTP/2Static256946,0288.43ms62.37ms6133.8%1.1GiB
HTTP/2Static1,024945,95032.62ms252.66ms6018.8%2.0GiB
HTTP/2Baseline (h2c)25613,245,5461.36ms11.40ms4889.2%669MiB
HTTP/2Baseline (h2c)1,02414,246,1074.63ms66.15ms5904.5%1.0GiB
HTTP/2Baseline (h2c)4,09612,405,36118.64ms178.69ms5345.7%1.8GiB
HTTP/2JSON (h2c)1,0242,337,57013.70ms128.02ms6114.7%1.6GiB
HTTP/2JSON (h2c)4,0962,254,91355.60ms398.59ms6295.1%4.3GiB
HTTP/3Baseline646,167,355546us1.11ms3546.0%766MiB
HTTP/3Static64770,7255.12ms22.59ms4863.4%1.8GiB
gRPCUnary2566,594,8623.09ms38.74ms5046.2%873MiB
gRPCUnary1,0246,699,3758.61ms161.90ms5429.4%1.5GiB
gRPCUnary TLS2564,331,7893.31ms33.90ms3283.1%873MiB
gRPCUnary TLS1,0244,233,51711.81ms92.98ms3353.1%1.5GiB

Compared with

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

EntryCompositevs fib-tuned
fiber-tuned6372-10%head to head
fib6302-11%head to head

Compare fib-tuned with any Go entry · Compare fib-tuned with any entry, in any language · Every Go entry, ranked

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