Graphql server benchmarks in many languages. Pull requests welcome.
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.29ms | 78kps |
graphql-crystal | Crystal | Kemal | 2.43ms | 41kps |
gqlgen | Go | net/http | 3.17ms | 32kps |
Juniper | Rust | Actix Web | 3.51ms | 28kps |
async-graphql | Rust | Actix Web | 3.76ms | 27kps |
Hot Chocolate | C# | ASP.NET | 6.50ms | 15kps |
Mercurius | Node.js | Fastify | 7.64ms | 13kps |
graphql-go | Go | net/http | 9.17ms | 11kps |
nim-graphql | Nim | Chronos | 9.54ms | 10kps |
agoo | Ruby/C | agoo | 10.47ms | 9.5kps |
graphql-yoga | Node.js | http | 15.31ms | 6.5kps |
graphql-jit | Node.js | http | 19.84ms | 5.0kps |
Absinthe | Elixir | Phoenix | 22.22ms | 4.5kps |
apollo | Node.js | Express | 31.02ms | 3.2kps |
graphql-ruby | Ruby | Puma | 44.93ms | 2.9kps |
graphql-js | Node.js | http | 40.17ms | 2.5kps |
Sangria | Scala | Akka HTTP | 95.31ms | 1.0kps |
Graphene | Python | gunicorn | 104.06ms | 950ps |
Strawberry | Python | gunicorn | 104.28ms | 950ps |