GraphQL server benchmarks

October 4, 2024 ยท View on GitHub

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

NameLanguageServerLatency avgRequests
static-rustRustActix Web1.79ms110kps
graphql-crystalCrystalKemal2.93ms68kps
gqlgenGonet/http3.67ms54kps
async-graphqlRustActix Web4.44ms45kps
JuniperRustActix Web5.16ms39kps
Hot ChocolateC#ASP.NET8.14ms25kps
MercuriusNode.jsFastify8.55ms23kps
graphql-goGonet/http9.96ms20kps
GraphqlDDVibe.d11.04ms18kps
agooRuby/Cagoo12.53ms16kps
graphql-yogaNode.jshttp13.66ms15kps
graphql-jitNode.jshttp19.11ms10kps
AbsintheElixirPhoenix23.16ms8.6kps
HonoBunHonoJS27.55ms7.3kps
apolloNode.jsExpress32.27ms6.2kps
graphql-rubyRubyPuma44.76ms5.7kps
nim-graphqlNimChronos54.42ms3.8kps
graphql-jsNode.jshttp52.83ms3.8kps
SangriaScalaAkka HTTP97.18ms2.0kps
GraphenePythongunicorn116.19ms1.7kps
StrawberryPythongunicorn117.29ms1.7kps