Skip to content

MDA2AV/HttpArena

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2,180 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

HttpArena

Discord Sponsored by Anthropic

Hardware Upgrade

Hi, thank you for visiting or contributing to our project, we are always looking to improve this benchmark platform, if you wish to help us by sponsoring or donating, all the money is invested into infrastructure costs, we are currently aiming for hardware upgrades that would substantially improve our benchmarks.

HTTP framework benchmark platform.

29 test profiles. 64-core dedicated hardware. Same conditions for every framework.

View Leaderboard | Documentation | Add a Framework


PR Commands

Command Description
/benchmark -f <framework> Run every test the framework subscribes to
/benchmark -f <framework> -t <test> Run one test only
/benchmark -f <framework> --save Run and save results (updates the leaderboard on merge)
/benchmark -f <framework> -t <test> --save Run one test and save results
/benchmark -f <framework> --compare <other> Measure the deltas against another framework instead of this one

Always specify -f <framework>; the flags combine in any order. Results come back as a comment with a per-profile table of RPS, p99, CPU and memory.

What the deltas are measured against. By default, this framework's own results published on main - answering "did this change help?". When you are tuning a variant or a successor entry, --compare re-bases them on another entry instead:

/benchmark -f genhttp-11 --compare genhttp

The reply states which baseline it used, and profiles the other framework does not run show n/a rather than a delta.


Test Profiles

Category Profiles Description
Connection baseline, pipelined, limited-conn Mixed GET/POST with query parsing (512/4K conns), 16× batched pipelining, short-lived connections that close after 10 requests
Workload json, json-comp, json-tls, upload, static JSON serialization, gzip/brotli compression, HTTP/1.1 over TLS, 20 MB body ingestion, 20-file static asset serving
Database async-db, crud Async Postgres sequential scan; realistic REST API with cached reads, list, upsert, update, and optional Redis cache
Templates fortunes * DB query + HTML template render (TechEmpower-style Fortunes). Reference-only — measures template-engine throughput, not part of the composite score
Multi-endpoint api-4, api-16 Mixed baseline + JSON + async-db at CPU-budget cliffs (4 and 16 logical CPUs, i.e. 2 and 8 full SMT cores)
H/2 baseline-h2, static-h2, baseline-h2c, json-h2c Baseline + static over TLS with h2 stream multiplexing; baseline + JSON over cleartext h2 (prior-knowledge, port 8082)
H/3 baseline-h3, static-h3 Baseline and static over QUIC with TLS 1.3
gRPC unary-grpc, unary-grpc-tls, stream-grpc, stream-grpc-tls Unary and server-streaming gRPC over plaintext HTTP/2 and TLS
Gateway gateway-64, gateway-h3 Reverse proxy + server stack over HTTP/2 and HTTP/3 with mixed workload
Production Stack production-stack Four-service architecture: edge + Redis + JWT auth sidecar + server, 10K-item cache-aside, concurrent reads + writes
WebSocket echo-ws, echo-ws-pipeline, echo-ws-limited Echo throughput across connection counts; 16x batched echo; echo with each connection closed after 10 messages (upgrade-handshake cost)

Run Locally

git clone https://github.com/MDA2AV/HttpArena.git
cd HttpArena

./scripts/validate.sh <framework>            # correctness check
./scripts/benchmark.sh <framework>           # all profiles
./scripts/benchmark.sh <framework> baseline  # specific profile
./scripts/benchmark.sh <framework> --save    # save results

Contributing

Framework Maintainers

Add your GitHub username to the maintainers array in your framework's meta.json to get notified when someone opens a PR that touches your framework:

"maintainers": ["your-github-username"]

Add the badge

Benchmarked on HttpArena? Add the badge to your project's README — it links to the live leaderboard and adapts to light & dark themes automatically.

[![Benchmarked by HttpArena](https://cdn.jsdelivr.net/gh/MDA2AV/httparena-badge/wordmark.svg)](https://www.http-arena.com/)

Prefer HTML, e.g. to set the size:

<a href="https://www.http-arena.com/">
  <img src="https://cdn.jsdelivr.net/gh/MDA2AV/httparena-badge/wordmark.svg" alt="Benchmarked by HttpArena" height="44">
</a>

Another badge variants:

  • Http/1.1: https://cdn.jsdelivr.net/gh/MDA2AV/httparena-badge/httparena-badge-h1.svg
  • Http/2: https://cdn.jsdelivr.net/gh/MDA2AV/httparena-badge/httparena-badge-h2.svg
  • Http/3: https://cdn.jsdelivr.net/gh/MDA2AV/httparena-badge/httparena-badge-h3.svg
  • Gateway: https://cdn.jsdelivr.net/gh/MDA2AV/httparena-badge/httparena-badge-gateway.svg
  • WebSocket: https://cdn.jsdelivr.net/gh/MDA2AV/httparena-badge/httparena-badge-websocket.svg
  • gRPC: https://cdn.jsdelivr.net/gh/MDA2AV/httparena-badge/httparena-badge-grpc.svg


Benchmarked by HttpArena H/1.1 Benchmarked by HttpArena H/1.1 Benchmarked by HttpArena H/1.1
Benchmarked by HttpArena H/1.1 Benchmarked by HttpArena H/1.1 Benchmarked by HttpArena H/1.1

About

The most complete HTTP open source benchmarking platform. Don't just say you're fast, prove it.

Resources

Stars

Watchers

Forks

Releases

Sponsor this project

Packages

Used by

Contributors

Languages