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 | 2.02ms | 49kps |
graphql-crystal | Crystal | Kemal | 3.54ms | 28kps |
gqlgen | Go | net/http | 5.96ms | 17kps |
Juniper | Rust | Actix Web | 6.87ms | 15kps |
async-graphql | Rust | Actix Web | 6.92ms | 14kps |
Hot Chocolate | C# | ASP.NET | 11.21ms | 8.9kps |
agoo | Ruby/C | agoo | 11.30ms | 8.8kps |
graphql-go | Go | net/http | 14.45ms | 6.9kps |
Mercurius | Node.js | Fastify | 15.40ms | 6.5kps |
graphql-yoga | Node.js | http | 24.92ms | 4.0kps |
graphql-jit | Node.js | http | 26.61ms | 3.8kps |
Absinthe | Elixir | Phoenix | 30.14ms | 3.3kps |
graphql-ruby | Ruby | Puma | 54.26ms | 2.4kps |
apollo | Node.js | Express | 50.32ms | 2.0kps |
graphql-js | Node.js | http | 57.10ms | 1.7kps |
Strawberry | Python | gunicorn | 136.33ms | 720ps |
Graphene | Python | gunicorn | 138.52ms | 710ps |
Sangria | Scala | Akka HTTP | 188.08ms | 520ps |