Home/Performance Benchmarks
BENCHMARKS · Last verified April 2026

Rust vs Go performance:
2026 benchmark data with sources.

Every figure linked to its primary source. TechEmpower, Benchmarks Game, and production-scale reality checks from Discord, Cloudflare, and Uber.

12x
Rust faster (binary-trees)
CPU-bound benchmark
Benchmarks Game
70%
Less CPU (Cloudflare)
Pingora vs NGINX at 1T req/day
Cloudflare blog 2022
10-30%
Rust edge (HTTP)
Actix-web vs Go Fiber (RPS)
TechEmpower Rnd 23

HTTP server throughput (TechEmpower Round 23)

Plaintext responses per second, identical hardware, no database. Source: techempower.com/benchmarks

RUSTActix-web 47.1M req/s
RUSTHyper 1.x6.8M req/s
RUSTAxum 0.76.2M req/s
GOGo Fiber v25.8M req/s
GOGo net/http (std)4.1M req/s
GOGo Echo v43.9M req/s
These are raw throughput figures under ideal conditions. Production APIs add database latency, authentication, logging, and business logic that close the gap considerably.

CPU-bound: Benchmarks Game (Rust vs Go)

Source: benchmarksgame-team.pages.debian.net

BenchmarkRust (s)Go (s)Rust advantage
binary-trees (GC pressure)1.34s16.80s12.5x faster
n-body (float math)4.54s13.02s2.9x faster
fasta (file I/O)1.22s2.42s2.0x faster
pidigits (big integers)1.21s1.36s1.1x faster
mandelbrot (SIMD-friendly)1.34s5.04s3.8x faster
Note: binary-trees is specifically designed to stress GC. The 12.5x gap reflects Rust's lack of GC vs Go's garbage collector under memory pressure. For workloads that don't stress the GC, gaps are smaller.

Memory footprint: typical web services

RUST
50-80 MB
Typical Axum/Actix-web service, no GC overhead, deterministic memory use
GO
100-320 MB
Typical net/http service with GC heap. Varies with load; GC triggers add memory overhead

Production-scale reality checks

Cloudflare PingoraRUST
70% less CPU, 67% less memory

Replaced NGINX as the primary HTTP proxy for 1 trillion requests per day. Built from scratch in Rust. This is not a micro-benchmark: it's the most heavily trafficked Rust program in the world.

Source →
Discord Read StatesRUST
Eliminated GC pauses entirely

Go service caused latency spikes every 2 minutes from GC pauses, even after memory pool optimisation. Rust rewrite eliminated all GC-related latency. 8 million concurrent Read State entries served without jitter.

Source →
Uber Go fleet (PGO)GO
24,000 CPU cores saved

Profile-guided optimisation (PGO) applied to Go microservices gave a 4% CPU reduction fleet-wide. At Uber's scale (600,000+ CPU cores), 4% = 24,000 cores. This demonstrates that Go at hyperscale is also worth optimising.

Source →
Twitch chat (Go)GO
10B+ messages/day, 2M+ concurrent streams

Go's goroutine model handles the concurrency of millions of simultaneous chat rooms without drama. No memory pressure that would require Rust. Go is fast enough for this workload and much faster to maintain.

Source →

The honest take: Go is fast enough for 99% of services

The Cloudflare and Discord migrations happened because they hit real, specific performance walls that Go could not clear. Both teams were running services at extraordinary scale with precise latency requirements. For an API serving <100k requests/second, or a CLI tool used by 10,000 engineers, Go's performance is irrelevant to your business outcome. Pick the language that ships faster and is easier to maintain. That's usually Go.

Goroutines vs Tokio: concurrency deep dive →Full case study table →