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.98ms | 50kps |
graphql-crystal | Crystal | Kemal | 4.04ms | 25kps |
gqlgen | Go | net/http | 6.86ms | 15kps |
Juniper | Rust | Actix Web | 7.37ms | 14kps |
async-graphql | Rust | Actix Web | 7.57ms | 13kps |
agoo | Ruby/C | agoo | 10.18ms | 9.8kps |
Hot Chocolate | C# | ASP.NET | 12.97ms | 7.9kps |
graphql-go | Go | net/http | 14.46ms | 6.9kps |
Mercurius | Node.js | Fastify | 14.68ms | 6.8kps |
Hono | Bun | HonoJS | 18.67ms | 5.4kps |
graphql-yoga | Node.js | http | 25.62ms | 3.9kps |
graphql-jit | Node.js | http | 26.98ms | 3.7kps |
Absinthe | Elixir | Phoenix | 32.08ms | 3.1kps |
graphql-ruby | Ruby | Puma | 55.67ms | 2.3kps |
apollo | Node.js | Express | 50.49ms | 2.0kps |
graphql-js | Node.js | http | 66.65ms | 1.5kps |
Strawberry | Python | gunicorn | 126.23ms | 780ps |
Graphene | Python | gunicorn | 126.85ms | 780ps |
Sangria | Scala | Akka HTTP | 180.79ms | 550ps |