/graphql-crystal-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.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