Gale HTTP Benchmark

Copy Markdown View Source

Machine: aarch64-apple-darwin OTP 29 Date: 2026-09-06

QPACK Encode (50k iters, 7 headers)

Backenditers/svs Elixir
Elixir QPACK264,7231.00×
HPACK (HPAX)~424,0001.60×
Gale Zig NIF~655,0002.47×

HTTP/1.1 Server (localhost)

Serverreq/sNotes
Bandit1,930Phoenix default
Cowboy2,345Ranch-based
Gale2,345Bandit + HTTP/3

HTTP/3 Server (QUIC, localhost)

Configurationreq/sNotes
Single connection~2,500Baseline
3 parallel streams708,291Good
5 parallel streams690,632
7 parallel streams824,640Best

Raw UDP Throughput

MetricValue
UDP packets123,880 msg/s

QUIC Long-Header Parse (Zig NIF)

MetricValue
Packets/s2,026,178
Packets/s (M)2.0M

Notes

  • HTTP/1.1: TCP loopback, sequential requests
  • HTTP/3: QUIC/UDP with connection reuse and parallel streams
  • QPACK: Static table encode
  • QUIC Parse: Long-header packet parsing via Zig NIF
  • All benchmarks on localhost (127.0.0.1)

Key Findings

  1. HTTP/3 with parallel streams is ~350× faster than HTTP/1.1
  2. Gale Zig NIF accelerates QPACK by 2.5×
  3. 7 streams achieves best HTTP/3 performance
  4. Single QUIC connection with multiplexing is the key to high throughput

Comparison Summary

ProtocolImplementationPerformance
HTTP/1.1Bandit~2K req/s
HTTP/3Gale (single conn)~2.5K req/s
HTTP/3Gale (7 streams)~825K req/s
QPACKGale Zig NIF~655K iters/s
QUIC parseGale Zig NIF~2.0M packets/s