/benchmarks

GraphQL server benchmarks

Primary LanguageElixirMIT LicenseMIT

GraphQL server benchmarks

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.

Results

Name Language Server Latency avg Requests
static-rust Rust Actix Web 1.83ms 110kps
Tailcall Rust Hyper 3.03ms 66kps
graphql-crystal Crystal Kemal 3.34ms 60kps
gqlgen Go net/http 3.96ms 51kps
async-graphql Rust Actix Web 4.60ms 43kps
Juniper Rust Actix Web 4.92ms 41kps
Hot Chocolate C# ASP.NET 8.58ms 23kps
Mercurius Node.js Fastify 9.90ms 20kps
graphql-go Go net/http 10.99ms 18kps
graphql-yoga Node.js http 14.89ms 13kps
graphql-jit Node.js http 20.05ms 10.0kps
nim-graphql Nim Chronos 20.65ms 9.7kps
Absinthe Elixir Phoenix 23.96ms 8.3kps
agoo Ruby/C agoo 26.61ms 7.3kps
Hono Bun HonoJS 28.55ms 7.0kps
apollo Node.js Express 34.78ms 5.8kps
graphql-ruby Ruby Puma 44.67ms 5.7kps
graphql-js Node.js http 45.94ms 4.4kps
Sangria Scala Akka HTTP 90.91ms 2.2kps
Strawberry Python gunicorn 108.45ms 1.8kps
Graphene Python gunicorn 108.37ms 1.8kps