Skip to main content

Comparison: Cloudflare R2

Summary

For small object workloads (1 KB objects), Tigris achieves approximately 20x the throughput of Cloudflare R2 for both read and write operations. R2 exhibits extremely high latency for small objects, making Tigris the clear winner for this use case.

Load Phase Results

Loading 10 million 1 KB objects into each system.

MetricTigrisCloudflare R2
P50 Latency
16.799 ms
197.119 ms
(11.73x Tigris)
P90 Latency
35.871 ms
340.223 ms
(9.48x Tigris)
Runtime
6710.7 sec
72063 sec
(10.74x Tigris)
Throughput
1490.2 ops/sec
138.8 ops/sec
(0.09x Tigris)

R2's p90 PUT latency tops 340ms whereas Tigris stays below 36ms. This extreme latency difference means Tigris finishes the load in 6711 seconds while R2 requires 72063 seconds (over 20 hours).

Total load time – Tigris vs S3 vs R2

Total load time for loading 10M 1 KB objects

Mixed Workload Results

1 million operations with 80% reads and 20% writes.

Read Performance

MetricTigrisCloudflare R2
P50 Latency
5.399 ms
605.695 ms
(112.19x Tigris)
P90 Latency
7.867 ms
680.959 ms
(86.56x Tigris)
Runtime
241.7 sec
4705.3 sec
(19.47x Tigris)
Throughput
3309.8 ops/sec
42.6 ops/sec
(0.01x Tigris)

Tigris sustains ≈3.3k ops/s, approximately 78x R2 (≈43 ops/s) for read operations.

Read throughput – Tigris vs R2

Read throughput during mixed workload

Read p90 latency – Tigris vs R2

Read p90 latency during mixed workload

Write Performance

MetricTigrisCloudflare R2
P50 Latency
12.855 ms
605.695 ms
(47.12x Tigris)
P90 Latency
16.543 ms
680.959 ms
(41.16x Tigris)
Runtime
241.6 sec
4705.3 sec
(19.48x Tigris)
Throughput
828.1 ops/sec
42.6 ops/sec
(0.05x Tigris)

Tigris delivers ≈828 ops/s, approximately 20x R2 (≈43 ops/s) for write operations.

Write throughput – Tigris vs R2

Write throughput during mixed workload

Write p90 latency – Tigris vs R2

Write p90 latency during mixed workload

Key Takeaways

  • 20x faster throughput for both reads and writes
  • Sub-10ms read latency vs R2's 680ms p90
  • Sub-20ms write latency vs R2's 680ms p90
  • 10x faster bulk loads for large datasets
  • R2 is not optimized for small object workloads

Next Steps