Research / Evidence

Performance research

The useful question is not whether Gray wins one chart. It is how much work it delivers before latency, memory, startup cost, or correctness stops being acceptable.

Every result here names its environment and boundary. Native executable and SIMD results are scoped qualifications, not universal language rankings.

01 / Operating envelope

Throughput and latency

Gray holds corrected p99 below 4 ms through the 45k point. At 60k the queue becomes visible. At 75k the server is overloaded. These results identify the capacity boundary for this workload.

Gray Static / plaintext

Corrected p99 curve

log ms

Logarithmic y-axis. The shape is the operating envelope, not a trophy chart.

Stable through 45k/sQueue forms at 60k/s85.76 ms p99 → 1.60 s at 75k/s
Gray corrected p99 latency by requested rate
Requested rateCorrected p99System state
8k/s3.13 msStable
12k/s2.42 msStable
20k/s2.25 msStable
30k/s2.73 msStable
45k/s3.81 msStable
60k/s85.76 msQueueing
75k/s1.60 sOverloaded
Stable through 45k/sQueueing at 60k/sOverloaded at 75k/s

AMD EPYC 9645 host · one pinned server CPU · 30 seconds per point · corrected-latency wrk2.

02 / External context

One controlled comparison.

This answers a narrow question: under one fixture and one CPU, which tested rate still met the delivery and tail-latency condition? It does not rank ecosystems, safety, maintainability, or production maturity.

Read the language decision guides
Identical fixture / pinned host

Highest tested rate that still qualified

req/s
Test environmentAMD EPYC 9645 · digest-pinned Ubuntu image · one server CPU · 30 seconds per point · threshold below 100 ms corrected p99.
Highest tested rate meeting the qualification threshold
RuntimeQualifying rate
PHP-FPM8k req/s
Node12k req/s
Go30k req/s
Gray60k req/s

Threshold: at least 95% delivery and corrected p99 below 100 ms. Not a general language ranking.

Operating envelope

Sustained performance

Reflective Grayworth bolt sculpture

03 / Qualification ledger

Completed load tests

1 hourPlaintext49,997.81/sp99 7.00 ms / RSS +0 KiB
1 hourNative JSON39,993.57/sp99 4.09 ms / RSS +0 KiB
30 secPostgreSQL continuation7,961.48/sp99 4.60 ms / 0 task workers
7 roundsNative loop25.918×cancellable W^X execution
101 roundsProgram-native Darwin15–18%less time than Static on accepted sum and hello fixtures
101 roundsSIMD integer sum40–49%less time than Go controls on Linux EPYC and macOS Apple Silicon; Rust remained faster on the exact macOS sum fixture