Skip to content

Performance Benchmarks

Real-world throughput and latency comparison between Helix RPC, FastAPI/Uvicorn (Python), and Go net/http (the model used by gRPC-Gateway) serving a simple HTTP/1.1 JSON REST route — GET /v1/users/{user_id}.

[!NOTE] All benchmarks were run locally with 100 concurrent connections over 10 seconds using autocannon. Results reflect the overhead of the HTTP routing and serialization layer only — business logic is a no-op (constant user profile response).


Results

Throughput (requests/second)

Framework / Protocol Req/Sec (avg) Speedup vs FastAPI
FastAPI + Uvicorn (Python) 7,811 1.0× (baseline)
Go net/http (gRPC-Gateway model) 133,545 17.1×
Helix RPC (Go runtime) 130,993 16.8×

Latency

Framework / Protocol P50 P99 Avg
FastAPI + Uvicorn (Python) 12 ms 17 ms 12.3 ms
Go net/http (gRPC-Gateway model) 0 ms 1 ms 0.12 ms
Helix RPC (Go runtime) 0 ms 1 ms 0.10 ms

Data Throughput (bytes/second)

Framework / Protocol Avg Bytes/Sec
FastAPI + Uvicorn (Python) 1.55 MB/s
Go net/http (gRPC-Gateway model) 25.6 MB/s
Helix RPC (Go runtime) 23.3 MB/s

Key Takeaways

🚀 16.8× Faster Than FastAPI

Helix's zero-copy Go runtime handles 130,993 requests/second versus FastAPI's 7,811 req/sec — a 16.8× throughput improvement for identical JSON REST workloads. This gap grows further under higher concurrency or with Protobuf/Thrift encoding.

⚡ Matches Native Go at Zero Added Cost

Helix RPC processes requests within 2% of raw Go net/http performance — meaning the multi-protocol sniffer, memory pooling, adaptive concurrency limiter, and REST transcoding layer add essentially zero overhead compared to hand-writing a Go HTTP server.

🌐 Multi-Protocol For Free

Unlike FastAPI (JSON/REST only) or gRPC-Gateway (requires a separate gRPC backend process + proxy), Helix serves gRPC, Thrift Compact, Thrift Binary, HTTP/JSON, gRPC-Web, and SSE — all through a single port and a single process — at the same throughput level.


Test Setup

Detail
Tool autocannon
Connections 100 concurrent
Duration 10 seconds
Endpoint GET /v1/users/42 → JSON response
FastAPI server Uvicorn 0.50, Python 3.14, single worker
gRPC-Gateway model Go net/http stdlib (equivalent to grpc-gateway proxy layer)
Helix RPC Go runtime with memory pool, adaptive concurrency limiter

Running Benchmarks Yourself

cd benchmarks
./run_benchmarks.sh

[!TIP] For higher-fidelity results, pin CPU affinity with taskset (Linux) and ensure no other processes are competing. Results on dedicated hardware will show an even wider margin.