Graphql server benchmarks in many languages. Pull requests welcome, please read CONTRIBUTING.md
All servers implement a simple schema:
type Query {
hello: String!
}
The returned string is always world
.
The API is served over HTTP using a common web server and load tested using bombardier.
Name | Language | Server | Latency avg | Requests |
---|---|---|---|---|
static-rust | Rust | Actix Web | 1.86ms | 110kps |
graphql-crystal | Crystal | Kemal | 2.97ms | 67kps |
Tailcall | Rust | Hyper | 3.61ms | 55kps |
gqlgen | Go | net/http | 4.05ms | 49kps |
async-graphql | Rust | Actix Web | 4.88ms | 41kps |
Juniper | Rust | Actix Web | 5.60ms | 36kps |
Hot Chocolate | C# | ASP.NET | 9.39ms | 21kps |
Mercurius | Node.js | Fastify | 10.20ms | 20kps |
graphql-go | Go | net/http | 11.37ms | 18kps |
graphql-yoga | Node.js | http | 15.62ms | 13kps |
agoo | Ruby/C | agoo | 16.52ms | 12kps |
nim-graphql | Nim | Chronos | 20.00ms | 10.0kps |
graphql-jit | Node.js | http | 20.42ms | 9.8kps |
Absinthe | Elixir | Phoenix | 23.86ms | 8.4kps |
Hono | Bun | HonoJS | 29.80ms | 6.7kps |
graphql-ruby | Ruby | Puma | 45.43ms | 5.7kps |
apollo | Node.js | Express | 35.77ms | 5.6kps |
graphql-js | Node.js | http | 46.15ms | 4.3kps |
Sangria | Scala | Akka HTTP | 97.50ms | 2.1kps |
Strawberry | Python | gunicorn | 109.97ms | 1.8kps |
Graphene | Python | gunicorn | 111.76ms | 1.8kps |