# Comparison: Cloudflare R2

<!-- -->

<!-- -->

<!-- -->

<!-- -->

<!-- -->

<!-- -->

## Summary[​](#summary "Direct link to 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[​](#load-phase-results "Direct link to Load Phase Results")

Loading 10 million 1 KB objects into each system.

| Metric      | Tigris                        | Cloudflare R2                                                      |
| ----------- | ----------------------------- | ------------------------------------------------------------------ |
| P50 Latency | 16.799<!-- --><!-- -->ms      | 197.119<!-- --><!-- -->ms<!-- -->(<!-- -->11.73<!-- -->x Tigris)   |
| P90 Latency | 35.871<!-- --><!-- -->ms      | 340.223<!-- --><!-- -->ms<!-- -->(<!-- -->9.48<!-- -->x Tigris)    |
| Runtime     | 6710.7<!-- --><!-- -->sec     | 72063<!-- --><!-- -->sec<!-- -->(<!-- -->10.74<!-- -->x Tigris)    |
| Throughput  | 1490.2<!-- --><!-- -->ops/sec | 138.8<!-- --><!-- -->ops/sec<!-- -->(<!-- -->0.09<!-- -->x 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](/docs/assets/images/total-time-load-comparison-c7c8a483cc6a0513151002e5975cef61.webp "Total load time – Tigris vs S3 vs R2")

*Total load time for loading 10M 1 KB objects*

## Mixed Workload Results[​](#mixed-workload-results "Direct link to Mixed Workload Results")

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

### Read Performance[​](#read-performance "Direct link to Read Performance")

| Metric      | Tigris                        | Cloudflare R2                                                     |
| ----------- | ----------------------------- | ----------------------------------------------------------------- |
| P50 Latency | 5.399<!-- --><!-- -->ms       | 605.695<!-- --><!-- -->ms<!-- -->(<!-- -->112.19<!-- -->x Tigris) |
| P90 Latency | 7.867<!-- --><!-- -->ms       | 680.959<!-- --><!-- -->ms<!-- -->(<!-- -->86.56<!-- -->x Tigris)  |
| Runtime     | 241.7<!-- --><!-- -->sec      | 4705.3<!-- --><!-- -->sec<!-- -->(<!-- -->19.47<!-- -->x Tigris)  |
| Throughput  | 3309.8<!-- --><!-- -->ops/sec | 42.6<!-- --><!-- -->ops/sec<!-- -->(<!-- -->0.01<!-- -->x Tigris) |

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

![Read throughput – Tigris vs R2](/docs/assets/images/run-sjc-r2-tigris-read-throughput_ops-bb6db6d7c60d1e342d2087f301535376.webp "Read throughput – Tigris vs R2")

*Read throughput during mixed workload*

![Read p90 latency – Tigris vs R2](/docs/assets/images/run-sjc-r2-tigris-read-latency_p90_ms-46e643e2523ea34e05f440062383f8a1.webp "Read p90 latency – Tigris vs R2")

*Read p90 latency during mixed workload*

### Write Performance[​](#write-performance "Direct link to Write Performance")

| Metric      | Tigris                       | Cloudflare R2                                                     |
| ----------- | ---------------------------- | ----------------------------------------------------------------- |
| P50 Latency | 12.855<!-- --><!-- -->ms     | 605.695<!-- --><!-- -->ms<!-- -->(<!-- -->47.12<!-- -->x Tigris)  |
| P90 Latency | 16.543<!-- --><!-- -->ms     | 680.959<!-- --><!-- -->ms<!-- -->(<!-- -->41.16<!-- -->x Tigris)  |
| Runtime     | 241.6<!-- --><!-- -->sec     | 4705.3<!-- --><!-- -->sec<!-- -->(<!-- -->19.48<!-- -->x Tigris)  |
| Throughput  | 828.1<!-- --><!-- -->ops/sec | 42.6<!-- --><!-- -->ops/sec<!-- -->(<!-- -->0.05<!-- -->x Tigris) |

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

![Write throughput – Tigris vs R2](/docs/assets/images/run-sjc-r2-tigris-update-throughput_ops-7b468a6c33651d711a76962ca6e53077.webp "Write throughput – Tigris vs R2")

*Write throughput during mixed workload*

![Write p90 latency – Tigris vs R2](/docs/assets/images/run-sjc-r2-tigris-update-latency_p90_ms-b0ae5cb55a67e1338eff80caf30c04e0.webp "Write p90 latency – Tigris vs R2")

*Write p90 latency during mixed workload*

## Key Takeaways[​](#key-takeaways "Direct link to 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[​](#next-steps "Direct link to Next Steps")

* [Comparison: AWS S3](/docs/overview/benchmarks/aws-s3/.md)
* [Model Training on Tigris](/docs/overview/benchmarks/model-training/.md)
* [Benchmark Summary](/docs/overview/benchmarks/summary/.md)
