Benchmarks

This page summarizes the latest benchmark findings from a full 3x matrix run (7 variants x 3 runs = 21 total), with fresh Rust PGO profiles regenerated for this code state.

Core results (mean of run means)

VariantRTT latency (ms)Small throughput (msg/s)Large throughput (msg/s)
rust-memory0.407377,143.91,837.2
rust-file (file-durable)5.3796,441.5530.7
rust-acid (acid)5.9086,495.9454.7
node-memory0.573334,943.91,653.9
node-file11.3773,240.0360.1
caddy-memory0.342313,490.91,144.4
caddy-acid16.0672,305.0271.6

Rust acid vs Caddy acid

MetricRust acidCaddy acidRelative
RTT latency (ms, lower is better)5.90816.067Rust acid 2.72x lower
Small throughput (msg/s, higher is better)6,495.92,305.0Rust acid 2.82x higher
Large throughput (msg/s, higher is better)454.7271.6Rust acid 1.67x higher

Durability note:

  • Caddy plugin file-backed mode (named caddy-acid in this page) documents a crash-atomicity limitation for append-data + producer-metadata updates.
  • Rust acid uses transactional commits for stream state and message data.
  • So this Rust acid result is not achieved by relaxing durability semantics in the same way.

Rust storage modes

Metricmemoryfile-durableacid
RTT latency (ms)0.4075.3795.908
Small throughput (msg/s)377,143.96,441.56,495.9
Large throughput (msg/s)1,837.2530.7454.7

Relative to Rust file-durable:

  • acid RTT latency: +9.8%
  • acid small throughput: +0.8%
  • acid large throughput: -14.3%

Benchmark quality notes

  • These numbers are from local synthetic tests.
  • Load generator and server processes share one machine in this run.
  • For production-grade comparability, run clients and servers on separate hosts and keep sustained windows longer than quick local iterations.

For full methodology and caveats, see /docs/benchmark-report.md in the repo root.