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.90ms | 110kps |
graphql-crystal | Crystal | Kemal | 3.00ms | 67kps |
Tailcall | Rust | Hyper | 3.39ms | 59kps |
gqlgen | Go | net/http | 4.07ms | 49kps |
async-graphql | Rust | Actix Web | 4.92ms | 41kps |
Juniper | Rust | Actix Web | 5.51ms | 36kps |
Hot Chocolate | C# | ASP.NET | 8.97ms | 22kps |
Mercurius | Node.js | Fastify | 10.13ms | 20kps |
graphql-go | Go | net/http | 11.06ms | 18kps |
agoo | Ruby/C | agoo | 13.51ms | 15kps |
graphql-yoga | Node.js | http | 15.29ms | 13kps |
graphql-jit | Node.js | http | 21.32ms | 9.4kps |
nim-graphql | Nim | Chronos | 21.85ms | 9.1kps |
Absinthe | Elixir | Phoenix | 23.57ms | 8.5kps |
Hono | Bun | HonoJS | 30.94ms | 6.5kps |
apollo | Node.js | Express | 35.18ms | 5.7kps |
graphql-ruby | Ruby | Puma | 46.03ms | 5.6kps |
graphql-js | Node.js | http | 46.20ms | 4.3kps |
Sangria | Scala | Akka HTTP | 97.00ms | 2.0kps |
Graphene | Python | gunicorn | 112.13ms | 1.9kps |
Strawberry | Python | gunicorn | 111.40ms | 1.8kps |