The Backend Runtime Showdown

See how Go, Rust, Rails, Node, Python, and PHP handle real-world checkout transactions under load.

Forget synthetic micro-benchmarks and hello-world scripts. The baseline numbers below come from a 500-iteration isolated load test (10k requests, 20 concurrent threads per backend). The Run Test tab lets you fire a live demo run from your browser โ€” results will differ since requests route through the web server.

Choose metric:

Throughput

Requests per second under load

Python (FastAPI)
1843 rps
baseline
Go (Fiber v2)
1731 rps
baseline
Rust (Axum)
1723 rps
baseline
Node (Fastify)
1682 rps
baseline
PHP (Symfony)
1346 rps
baseline
Rails (Puma)
1177 rps
baseline

What Is This Benchmark?

Most benchmarks test hello-world endpoints or simple JSON serialization. This one is different.

We simulate a real-world checkout transaction โ€” the kind that generates revenue for online businesses. Each test measures how each runtime handles:

  • โ†’ Throughput: How many successful checkouts per second under load
  • โ†’ Latency: P50, P95, P99 response times across a 30-second ramp-up
  • โ†’ Resource Efficiency: Memory, CPU, and database connection usage
  • โ†’ Error Handling: Reliability under extreme load

The Checkout Workflow

๐Ÿ”

Auth Check

Validate JWT session

๐Ÿ“ฆ

Inventory Lock

Atomic DB update

๐Ÿ’ณ

Payment Gateway

HTTPS to payment processor

๐Ÿ“

Order Creation

Write to database

๐Ÿ“ง

Notification

Trigger async events

1,000
Virtual Users
30s
Ramp-up Time
100
Warmup Requests
Same
Hardware

Backend Bake-off Dashboard ยท Compare Go, Rust, Rails, Node, Python, and PHP

GitHub