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.88ms | 110kps |
graphql-crystal | Crystal | Kemal | 3.34ms | 60kps |
gqlgen | Go | net/http | 4.37ms | 46kps |
async-graphql | Rust | Actix Web | 4.79ms | 42kps |
Juniper | Rust | Actix Web | 5.43ms | 37kps |
Hot Chocolate | C# | ASP.NET | 9.94ms | 20kps |
Mercurius | Node.js | Fastify | 10.73ms | 19kps |
graphql-go | Go | net/http | 11.45ms | 17kps |
GraphqlD | D | Vibe.d | 12.40ms | 16kps |
agoo | Ruby/C | agoo | 13.01ms | 15kps |
graphql-yoga | Node.js | http | 16.08ms | 13kps |
graphql-jit | Node.js | http | 21.31ms | 9.4kps |
Absinthe | Elixir | Phoenix | 25.47ms | 7.8kps |
Hono | Bun | HonoJS | 26.89ms | 7.4kps |
apollo | Node.js | Express | 35.25ms | 5.6kps |
graphql-ruby | Ruby | Puma | 48.30ms | 5.3kps |
nim-graphql | Nim | Chronos | 57.11ms | 3.6kps |
graphql-js | Node.js | http | 57.00ms | 3.5kps |
Sangria | Scala | Akka HTTP | 112.40ms | 1.8kps |
Graphene | Python | gunicorn | 128.63ms | 1.5kps |
Strawberry | Python | gunicorn | 132.70ms | 1.5kps |