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.23ms | 81kps |
graphql-crystal | Crystal | Kemal | 2.40ms | 42kps |
gqlgen | Go | net/http | 3.06ms | 33kps |
Juniper | Rust | Actix Web | 3.33ms | 30kps |
async-graphql | Rust | Actix Web | 3.81ms | 26kps |
Mercurius | Node.js | Fastify | 5.90ms | 17kps |
Hot Chocolate | C# | ASP.NET | 7.19ms | 14kps |
agoo | Ruby/C | agoo | 7.81ms | 13kps |
graphql-go | Go | net/http | 8.86ms | 11kps |
Hono | Bun | HonoJS | 11.87ms | 8.4kps |
graphql-jit | Node.js | http | 15.70ms | 6.4kps |
Absinthe | Elixir | Phoenix | 18.78ms | 5.3kps |
graphql-yoga | Node.js | http | 18.81ms | 5.3kps |
apollo | Node.js | Express | 23.37ms | 4.3kps |
graphql-ruby | Ruby | Puma | 38.88ms | 3.3kps |
graphql-js | Node.js | http | 32.49ms | 3.1kps |
Strawberry | Python | gunicorn | 101.37ms | 980ps |
Graphene | Python | gunicorn | 101.56ms | 970ps |
Sangria | Scala | Akka HTTP | 114.06ms | 870ps |