From 3f36cf4b2440854cf51a6096029cf7b7cc6f44a6 Mon Sep 17 00:00:00 2001 From: Ibraheem Ahmed Date: Mon, 8 Jul 2024 02:03:00 -0400 Subject: [PATCH] add benchmarks to readme --- BENCHMARKS.md | 32 +++ README.md | 4 +- assets/Exchange.ahash.latency.svg | 232 ++++++++++++++++++++ assets/Exchange.ahash.throughput.svg | 192 +++++++++++++++++ assets/RapidGrow.ahash.latency.svg | 232 ++++++++++++++++++++ assets/RapidGrow.ahash.throughput.svg | 192 +++++++++++++++++ assets/ReadHeavy.ahash.latency.svg | 296 ++++++++++++++++++++++++++ assets/ReadHeavy.ahash.throughput.svg | 192 +++++++++++++++++ assets/dashmap-hist.png | Bin 0 -> 31529 bytes assets/papaya-hist.png | Bin 0 -> 30970 bytes 10 files changed, 1370 insertions(+), 2 deletions(-) create mode 100644 BENCHMARKS.md create mode 100644 assets/Exchange.ahash.latency.svg create mode 100644 assets/Exchange.ahash.throughput.svg create mode 100644 assets/RapidGrow.ahash.latency.svg create mode 100644 assets/RapidGrow.ahash.throughput.svg create mode 100644 assets/ReadHeavy.ahash.latency.svg create mode 100644 assets/ReadHeavy.ahash.throughput.svg create mode 100644 assets/dashmap-hist.png create mode 100644 assets/papaya-hist.png diff --git a/BENCHMARKS.md b/BENCHMARKS.md new file mode 100644 index 0000000..171d015 --- /dev/null +++ b/BENCHMARKS.md @@ -0,0 +1,32 @@ +# Benchmarks + +*As always, benchmarks should be taken with a grain of salt. Always measure for your workload.* + +Below are the benchmark results from the [`conc-map-bench`](https://github.com/xacrimon/conc-map-bench) benchmarking harness under varying workloads. All benchmarks were run on a Ryzen 3700X (16 threads) with [`ahash`](https://github.com/tkaitchuck/aHash) and the [`mimalloc`](https://github.com/microsoft/mimalloc) allocator. + +### Read Heavy + +| | | +:-------------------------:|:-------------------------: +![](assets/ReadHeavy.ahash.throughput.svg) | ![](assets/ReadHeavy.ahash.latency.svg) + +### Exchange + +| | | +:-------------------------:|:-------------------------: +![](assets/Exchange.ahash.throughput.svg) | ![](assets/Exchange.ahash.latency.svg) + +### Rapid Grow + +| | | +:-------------------------:|:-------------------------: +![](assets/RapidGrow.ahash.throughput.svg) | ![](assets/RapidGrow.ahash.latency.svg) + +# Discussion + +`papaya` is read-heavy workloads and outperforms all competitors in the read-heavy benchmark. It falls short in update and write-heavy workloads due to allocator pressure, which is expected. However, an important guarantee of `papaya` is that reads *never* block under any circumstances. This is crucial for providing consistent read latency regardless of write concurrency. + +Additionally, `papaya` does a lot better in terms of latency distribution due to incremental resizing and the lack of bucket locks. Comparing histograms of `insert` latency between `papaya` and `dashmap`, we see that `papaya` manages to keep tail latency orders of magnitude lower. Some tail latency is unavoidable due to the large allocations necessary to resize a hash-table, but the distribution is much more consistent (notice the scale of the y-axis). + +![](assets/papaya-hist.png) +![](assets/dashmap-hist.png) diff --git a/README.md b/README.md index ad7fc48..696e2e7 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ A fast and ergonomic concurrent hash-table that features: - An ergonomic lock-free API — no more deadlocks! - Powerful atomic operations. - Seamless usage in async contexts. -- Extremely fast and scalable reads (see [benchmarks]). +- Extremely scalable low-latency reads (see [performance](#performance)). - Predictable latency across all operations. - Efficient memory usage, with garbage collection powered by [`seize`]. @@ -190,6 +190,6 @@ The `Guard` trait supports both local and owned guards. Note the `'guard` lifeti `papaya` also aims to provide predictable, consistent latency across all operations. Most operations are lock-free, and those that aren't only block under rare and constrained conditions. `papaya` also features [incremental resizing]. Predictable latency is an important part of performance that doesn't often show up in benchmarks, but has significant implications for real-world usage. -[benchmarks]: TODO +[benchmarks]: ./BENCHMARKS.md [`seize`]: https://docs.rs/seize/latest [incremental resizing]: https://docs.rs/papaya/latest/papaya/enum.ResizeMode.html diff --git a/assets/Exchange.ahash.latency.svg b/assets/Exchange.ahash.latency.svg new file mode 100644 index 0000000..5cc08e7 --- /dev/null +++ b/assets/Exchange.ahash.latency.svg @@ -0,0 +1,232 @@ + + + +Exchange.ahash: Latency + + + + + + + + + + + + + + + + + + +Latency + + +Threads + + +Latency + + + + + + + + + + + + + + + + + + + +0 ns + + + +50 ns + + + +100 ns + + + +150 ns + + + +200 ns + + + +250 ns + + + +300 ns + + + +350 ns + + + +400 ns + + + +450 ns + + + +500 ns + + + +550 ns + + + + +1 + + + +2 + + + +3 + + + +4 + + + +5 + + + +6 + + + +7 + + + +8 + + + +9 + + + +10 + + + +11 + + + +12 + + + +13 + + + +14 + + + +15 + + + +16 + + + + +0 ns + + + +50 ns + + + +100 ns + + + +150 ns + + + +200 ns + + + +250 ns + + + +300 ns + + + +350 ns + + + +400 ns + + + +450 ns + + + +500 ns + + + +550 ns + + + + + + + + + +DashMap + + +Flurry + + +Papaya + + +SccMap + + + + + + diff --git a/assets/Exchange.ahash.throughput.svg b/assets/Exchange.ahash.throughput.svg new file mode 100644 index 0000000..08d91d6 --- /dev/null +++ b/assets/Exchange.ahash.throughput.svg @@ -0,0 +1,192 @@ + + + +Exchange.ahash: Throughput + + + + + + + + + + + + + + + + + + +Throughput + + +Threads + + +Throughput + + + + + + + + + + + + + + + + + + + +0 Mop/s + + + +10 Mop/s + + + +20 Mop/s + + + +30 Mop/s + + + +40 Mop/s + + + +50 Mop/s + + + +60 Mop/s + + + + +1 + + + +2 + + + +3 + + + +4 + + + +5 + + + +6 + + + +7 + + + +8 + + + +9 + + + +10 + + + +11 + + + +12 + + + +13 + + + +14 + + + +15 + + + +16 + + + + +0 Mop/s + + + +10 Mop/s + + + +20 Mop/s + + + +30 Mop/s + + + +40 Mop/s + + + +50 Mop/s + + + +60 Mop/s + + + + + + + + + +DashMap + + +Flurry + + +Papaya + + +SccMap + + + + + + diff --git a/assets/RapidGrow.ahash.latency.svg b/assets/RapidGrow.ahash.latency.svg new file mode 100644 index 0000000..1d17807 --- /dev/null +++ b/assets/RapidGrow.ahash.latency.svg @@ -0,0 +1,232 @@ + + + +RapidGrow.ahash: Latency + + + + + + + + + + + + + + + + + + +Latency + + +Threads + + +Latency + + + + + + + + + + + + + + + + + + + +0 ns + + + +50 ns + + + +100 ns + + + +150 ns + + + +200 ns + + + +250 ns + + + +300 ns + + + +350 ns + + + +400 ns + + + +450 ns + + + +500 ns + + + +550 ns + + + + +1 + + + +2 + + + +3 + + + +4 + + + +5 + + + +6 + + + +7 + + + +8 + + + +9 + + + +10 + + + +11 + + + +12 + + + +13 + + + +14 + + + +15 + + + +16 + + + + +0 ns + + + +50 ns + + + +100 ns + + + +150 ns + + + +200 ns + + + +250 ns + + + +300 ns + + + +350 ns + + + +400 ns + + + +450 ns + + + +500 ns + + + +550 ns + + + + + + + + + +DashMap + + +Flurry + + +Papaya + + +SccMap + + + + + + diff --git a/assets/RapidGrow.ahash.throughput.svg b/assets/RapidGrow.ahash.throughput.svg new file mode 100644 index 0000000..6b17984 --- /dev/null +++ b/assets/RapidGrow.ahash.throughput.svg @@ -0,0 +1,192 @@ + + + +RapidGrow.ahash: Throughput + + + + + + + + + + + + + + + + + + +Throughput + + +Threads + + +Throughput + + + + + + + + + + + + + + + + + + + +0 Mop/s + + + +10 Mop/s + + + +20 Mop/s + + + +30 Mop/s + + + +40 Mop/s + + + +50 Mop/s + + + +60 Mop/s + + + + +1 + + + +2 + + + +3 + + + +4 + + + +5 + + + +6 + + + +7 + + + +8 + + + +9 + + + +10 + + + +11 + + + +12 + + + +13 + + + +14 + + + +15 + + + +16 + + + + +0 Mop/s + + + +10 Mop/s + + + +20 Mop/s + + + +30 Mop/s + + + +40 Mop/s + + + +50 Mop/s + + + +60 Mop/s + + + + + + + + + +DashMap + + +Flurry + + +Papaya + + +SccMap + + + + + + diff --git a/assets/ReadHeavy.ahash.latency.svg b/assets/ReadHeavy.ahash.latency.svg new file mode 100644 index 0000000..a024fe3 --- /dev/null +++ b/assets/ReadHeavy.ahash.latency.svg @@ -0,0 +1,296 @@ + + + +ReadHeavy.ahash: Latency + + + + + + + + + + + + + + + + + + +Latency + + +Threads + + +Latency + + + + + + + + + + + + + + + + + + + +0 ns + + + +10 ns + + + +20 ns + + + +30 ns + + + +40 ns + + + +50 ns + + + +60 ns + + + +70 ns + + + +80 ns + + + +90 ns + + + +100 ns + + + +110 ns + + + +120 ns + + + +130 ns + + + +140 ns + + + +150 ns + + + +160 ns + + + +170 ns + + + +180 ns + + + +190 ns + + + + +1 + + + +2 + + + +3 + + + +4 + + + +5 + + + +6 + + + +7 + + + +8 + + + +9 + + + +10 + + + +11 + + + +12 + + + +13 + + + +14 + + + +15 + + + +16 + + + + +0 ns + + + +10 ns + + + +20 ns + + + +30 ns + + + +40 ns + + + +50 ns + + + +60 ns + + + +70 ns + + + +80 ns + + + +90 ns + + + +100 ns + + + +110 ns + + + +120 ns + + + +130 ns + + + +140 ns + + + +150 ns + + + +160 ns + + + +170 ns + + + +180 ns + + + +190 ns + + + + + + + + + +DashMap + + +Flurry + + +Papaya + + +SccMap + + + + + + diff --git a/assets/ReadHeavy.ahash.throughput.svg b/assets/ReadHeavy.ahash.throughput.svg new file mode 100644 index 0000000..5f49ebd --- /dev/null +++ b/assets/ReadHeavy.ahash.throughput.svg @@ -0,0 +1,192 @@ + + + +ReadHeavy.ahash: Throughput + + + + + + + + + + + + + + + + + + +Throughput + + +Threads + + +Throughput + + + + + + + + + + + + + + + + + + + +0 Mop/s + + + +20 Mop/s + + + +40 Mop/s + + + +60 Mop/s + + + +80 Mop/s + + + +100 Mop/s + + + +120 Mop/s + + + + +1 + + + +2 + + + +3 + + + +4 + + + +5 + + + +6 + + + +7 + + + +8 + + + +9 + + + +10 + + + +11 + + + +12 + + + +13 + + + +14 + + + +15 + + + +16 + + + + +0 Mop/s + + + +20 Mop/s + + + +40 Mop/s + + + +60 Mop/s + + + +80 Mop/s + + + +100 Mop/s + + + +120 Mop/s + + + + + + + + + +DashMap + + +Flurry + + +Papaya + + +SccMap + + + + + + diff --git a/assets/dashmap-hist.png b/assets/dashmap-hist.png new file mode 100644 index 0000000000000000000000000000000000000000..78a257e31a04258d8cbd3f2bbee15adcf033ab3d GIT binary patch literal 31529 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 XIqF+nyb9)s*L++&oie19K}ds?v~+`X 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