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.79ms | 110kps |
graphql-crystal | Crystal | Kemal | 2.93ms | 68kps |
gqlgen | Go | net/http | 3.67ms | 54kps |
async-graphql | Rust | Actix Web | 4.44ms | 45kps |
Juniper | Rust | Actix Web | 5.16ms | 39kps |
Hot Chocolate | C# | ASP.NET | 8.14ms | 25kps |
Mercurius | Node.js | Fastify | 8.55ms | 23kps |
graphql-go | Go | net/http | 9.96ms | 20kps |
GraphqlD | D | Vibe.d | 11.04ms | 18kps |
agoo | Ruby/C | agoo | 12.53ms | 16kps |
graphql-yoga | Node.js | http | 13.66ms | 15kps |
graphql-jit | Node.js | http | 19.11ms | 10kps |
Absinthe | Elixir | Phoenix | 23.16ms | 8.6kps |
Hono | Bun | HonoJS | 27.55ms | 7.3kps |
apollo | Node.js | Express | 32.27ms | 6.2kps |
graphql-ruby | Ruby | Puma | 44.76ms | 5.7kps |
nim-graphql | Nim | Chronos | 54.42ms | 3.8kps |
graphql-js | Node.js | http | 52.83ms | 3.8kps |
Sangria | Scala | Akka HTTP | 97.18ms | 2.0kps |
Graphene | Python | gunicorn | 116.19ms | 1.7kps |
Strawberry | Python | gunicorn | 117.29ms | 1.7kps |