GraphQL server benchmarks
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.
Results
Name | Language | Server | Latency avg | Requests |
---|---|---|---|---|
static-rust | Rust | Actix Web | 1.54ms | 65kps |
Tailcall | Rust | Hyper | 3.24ms | 31kps |
graphql-crystal | Crystal | Kemal | 3.74ms | 27kps |
async-graphql | Rust | Actix Web | 3.84ms | 26kps |
Juniper | Rust | Actix Web | 3.89ms | 26kps |
gqlgen | Go | net/http | 4.01ms | 25kps |
Hot Chocolate | C# | ASP.NET | 7.53ms | 13kps |
Mercurius | Node.js | Fastify | 8.84ms | 11kps |
nim-graphql | Nim | Chronos | 11.39ms | 8.8kps |
graphql-go | Go | net/http | 11.80ms | 8.5kps |
agoo | Ruby/C | agoo | 13.41ms | 7.5kps |
graphql-yoga | Node.js | http | 16.12ms | 6.2kps |
Hono | Bun | HonoJS | 20.37ms | 4.9kps |
Absinthe | Elixir | Phoenix | 26.96ms | 3.7kps |
graphql-jit | Node.js | http | 29.19ms | 3.4kps |
apollo | Node.js | Express | 38.92ms | 2.6kps |
graphql-ruby | Ruby | Puma | 52.44ms | 2.4kps |
graphql-js | Node.js | http | 52.78ms | 1.9kps |
Graphene | Python | gunicorn | 99.45ms | 990ps |
Strawberry | Python | gunicorn | 104.10ms | 950ps |
Sangria | Scala | Akka HTTP | 170.34ms | 580ps |