5 scenarios + mixed traffic + degradation · 50 VUs · ~100 min

GraphQL Bench

Same GraphQL schema and queries across server stacks.

Apple M1 Max · 10 cores

Compare NestJS with direct integrations (without NestJS). Express and Fastify host the GraphQL endpoint; standalone Yoga runs directly on Node.js HTTP.

NestJS
Express + Apollo
17,016

req/s on health check

avg 2.41msp99 5.5ms
Fastify + Apollo
20,946

req/s on health check

avg 1.95msp99 4.47ms
Fastify + Mercurius
31,035

req/s on health check

avg 1.29msp99 2.98ms
Fastify + Yoga
17,372

req/s on health check

avg 2.36msp99 5.38ms
Direct · without NestJS
Express + Apollo
17,834

req/s on health check

+5% vs NestJS

avg 2.29msp99 5.24ms
Express + Yoga
19,563

req/s on health check

No NestJS version

avg 2.09msp99 4.76ms
Fastify + Apollo
21,816

req/s on health check

+4% vs NestJS

avg 1.87msp99 4.29ms
Fastify + Mercurius
30,216

req/s on health check

−3% vs NestJS

avg 1.33msp99 3.07ms
Fastify + Yoga
17,955

req/s on health check

+3% vs NestJS

avg 2.28msp99 5.16ms
Yoga Standalone
21,096

req/s on health check

No NestJS version

avg 1.93msp99 4.42ms

Throughput by Scenario

Requests per second, higher is better — each scenario on its own scale

Express + ApolloFastify + ApolloFastify + MercuriusFastify + YogaExpress + YogaYoga StandaloneNestJSDirect (without NestJS)

Health Check (Scalar)

light

Single User + Posts

medium

Paginated Users (10)

heavy

Deep Nested (5×10×8)

extreme

Create Post (Mutation)

medium

Scenario Deep Dive

Express + ApolloNestJS
17,016req/s

baseline

avg 2.41msmed 2.56msp95 3.64msp99 5.5ms
Fastify + ApolloNestJS
20,946req/s

+23% vs slowest

avg 1.95msmed 2.08msp95 3msp99 4.47ms
Fastify + MercuriusNestJS
31,035req/s

+82% vs slowest

avg 1.29msmed 1.38msp95 2.39msp99 2.98ms
Fastify + YogaNestJS
17,372req/s

+2% vs slowest

avg 2.36msmed 2.51msp95 3.51msp99 5.38ms
Express + ApolloDirect
17,834req/s

+5% vs slowest

+5% vs NestJS

avg 2.29msmed 2.44msp95 3.5msp99 5.24ms
Express + YogaDirect
19,563req/s

+15% vs slowest

No NestJS version

avg 2.09msmed 2.23msp95 3.13msp99 4.76ms
Fastify + ApolloDirect
21,816req/s

+28% vs slowest

+4% vs NestJS

avg 1.87msmed 1.99msp95 2.96msp99 4.29ms
Fastify + MercuriusDirect
30,216req/s

+78% vs slowest

−3% vs NestJS

avg 1.33msmed 1.43msp95 2.56msp99 3.07ms
Fastify + YogaDirect
17,955req/s

+6% vs slowest

+3% vs NestJS

avg 2.28msmed 2.44msp95 3.33msp99 5.16ms
Yoga StandaloneDirect
21,096req/s

+24% vs slowest

No NestJS version

avg 1.93msmed 2.06msp95 2.95msp99 4.42ms

Latency Percentiles — Health Check (Scalar)

Response time distribution — lower is better

Express + ApolloFastify + ApolloFastify + MercuriusFastify + YogaExpress + YogaYoga StandaloneNestJSDirect (without NestJS)