diff --git a/doc/diagrams/benchmarks-concurrent_map/clang-arm64/Parallel workload.xlsx.500k, 0.01.png b/doc/diagrams/benchmarks-concurrent_map/clang-arm64/Parallel workload.xlsx.500k, 0.01.png index bf71c537..d520c75d 100644 Binary files a/doc/diagrams/benchmarks-concurrent_map/clang-arm64/Parallel workload.xlsx.500k, 0.01.png and b/doc/diagrams/benchmarks-concurrent_map/clang-arm64/Parallel workload.xlsx.500k, 0.01.png differ diff --git a/doc/diagrams/benchmarks-concurrent_map/clang-arm64/Parallel workload.xlsx.500k, 0.5.png b/doc/diagrams/benchmarks-concurrent_map/clang-arm64/Parallel workload.xlsx.500k, 0.5.png index a38c3fa1..db2e2bd7 100644 Binary files a/doc/diagrams/benchmarks-concurrent_map/clang-arm64/Parallel workload.xlsx.500k, 0.5.png and b/doc/diagrams/benchmarks-concurrent_map/clang-arm64/Parallel workload.xlsx.500k, 0.5.png differ diff --git a/doc/diagrams/benchmarks-concurrent_map/clang-arm64/Parallel workload.xlsx.500k, 0.99.png b/doc/diagrams/benchmarks-concurrent_map/clang-arm64/Parallel workload.xlsx.500k, 0.99.png index 0794eb5f..4fe557bf 100644 Binary files a/doc/diagrams/benchmarks-concurrent_map/clang-arm64/Parallel workload.xlsx.500k, 0.99.png and b/doc/diagrams/benchmarks-concurrent_map/clang-arm64/Parallel workload.xlsx.500k, 0.99.png differ diff --git a/doc/diagrams/benchmarks-concurrent_map/clang-arm64/Parallel workload.xlsx.5M, 0.01.png b/doc/diagrams/benchmarks-concurrent_map/clang-arm64/Parallel workload.xlsx.5M, 0.01.png index 8da3eb16..ab161b77 100644 Binary files a/doc/diagrams/benchmarks-concurrent_map/clang-arm64/Parallel workload.xlsx.5M, 0.01.png and b/doc/diagrams/benchmarks-concurrent_map/clang-arm64/Parallel workload.xlsx.5M, 0.01.png differ diff --git a/doc/diagrams/benchmarks-concurrent_map/clang-arm64/Parallel workload.xlsx.5M, 0.5.png b/doc/diagrams/benchmarks-concurrent_map/clang-arm64/Parallel workload.xlsx.5M, 0.5.png index b760e7f8..1dbb35d8 100644 Binary files a/doc/diagrams/benchmarks-concurrent_map/clang-arm64/Parallel workload.xlsx.5M, 0.5.png and b/doc/diagrams/benchmarks-concurrent_map/clang-arm64/Parallel workload.xlsx.5M, 0.5.png differ diff --git a/doc/diagrams/benchmarks-concurrent_map/clang-arm64/Parallel workload.xlsx.5M, 0.99.png b/doc/diagrams/benchmarks-concurrent_map/clang-arm64/Parallel workload.xlsx.5M, 0.99.png index 68d6a996..20da6ca6 100644 Binary files a/doc/diagrams/benchmarks-concurrent_map/clang-arm64/Parallel workload.xlsx.5M, 0.99.png and b/doc/diagrams/benchmarks-concurrent_map/clang-arm64/Parallel workload.xlsx.5M, 0.99.png differ diff --git a/doc/diagrams/benchmarks-concurrent_map/clang-x64/Parallel workload.xlsx.500k, 0.01.png b/doc/diagrams/benchmarks-concurrent_map/clang-x64/Parallel workload.xlsx.500k, 0.01.png index 88564686..2c0492ce 100644 Binary files a/doc/diagrams/benchmarks-concurrent_map/clang-x64/Parallel workload.xlsx.500k, 0.01.png and b/doc/diagrams/benchmarks-concurrent_map/clang-x64/Parallel workload.xlsx.500k, 0.01.png differ diff --git a/doc/diagrams/benchmarks-concurrent_map/clang-x64/Parallel workload.xlsx.500k, 0.5.png b/doc/diagrams/benchmarks-concurrent_map/clang-x64/Parallel workload.xlsx.500k, 0.5.png index 6c0c1012..a221f9fd 100644 Binary files a/doc/diagrams/benchmarks-concurrent_map/clang-x64/Parallel workload.xlsx.500k, 0.5.png and b/doc/diagrams/benchmarks-concurrent_map/clang-x64/Parallel workload.xlsx.500k, 0.5.png differ diff --git a/doc/diagrams/benchmarks-concurrent_map/clang-x64/Parallel workload.xlsx.500k, 0.99.png b/doc/diagrams/benchmarks-concurrent_map/clang-x64/Parallel workload.xlsx.500k, 0.99.png index e587b266..53f7198c 100644 Binary files a/doc/diagrams/benchmarks-concurrent_map/clang-x64/Parallel workload.xlsx.500k, 0.99.png and b/doc/diagrams/benchmarks-concurrent_map/clang-x64/Parallel workload.xlsx.500k, 0.99.png differ diff --git a/doc/diagrams/benchmarks-concurrent_map/clang-x64/Parallel workload.xlsx.5M, 0.01.png b/doc/diagrams/benchmarks-concurrent_map/clang-x64/Parallel workload.xlsx.5M, 0.01.png index d8dca6d1..d1d96971 100644 Binary files a/doc/diagrams/benchmarks-concurrent_map/clang-x64/Parallel workload.xlsx.5M, 0.01.png and b/doc/diagrams/benchmarks-concurrent_map/clang-x64/Parallel workload.xlsx.5M, 0.01.png differ diff --git a/doc/diagrams/benchmarks-concurrent_map/clang-x64/Parallel workload.xlsx.5M, 0.5.png b/doc/diagrams/benchmarks-concurrent_map/clang-x64/Parallel workload.xlsx.5M, 0.5.png index bf38d42b..f01f1d39 100644 Binary files a/doc/diagrams/benchmarks-concurrent_map/clang-x64/Parallel workload.xlsx.5M, 0.5.png and b/doc/diagrams/benchmarks-concurrent_map/clang-x64/Parallel workload.xlsx.5M, 0.5.png differ diff --git a/doc/diagrams/benchmarks-concurrent_map/clang-x64/Parallel workload.xlsx.5M, 0.99.png b/doc/diagrams/benchmarks-concurrent_map/clang-x64/Parallel workload.xlsx.5M, 0.99.png index da28fbc7..fe7749aa 100644 Binary files a/doc/diagrams/benchmarks-concurrent_map/clang-x64/Parallel workload.xlsx.5M, 0.99.png and b/doc/diagrams/benchmarks-concurrent_map/clang-x64/Parallel workload.xlsx.5M, 0.99.png differ diff --git a/doc/diagrams/benchmarks-concurrent_map/clang-x86/Parallel workload.xlsx.500k, 0.01.png b/doc/diagrams/benchmarks-concurrent_map/clang-x86/Parallel workload.xlsx.500k, 0.01.png index 0edf67be..e6d79735 100644 Binary files a/doc/diagrams/benchmarks-concurrent_map/clang-x86/Parallel workload.xlsx.500k, 0.01.png and b/doc/diagrams/benchmarks-concurrent_map/clang-x86/Parallel workload.xlsx.500k, 0.01.png differ diff --git a/doc/diagrams/benchmarks-concurrent_map/clang-x86/Parallel workload.xlsx.500k, 0.5.png b/doc/diagrams/benchmarks-concurrent_map/clang-x86/Parallel workload.xlsx.500k, 0.5.png index 58229fef..fff5dc95 100644 Binary files a/doc/diagrams/benchmarks-concurrent_map/clang-x86/Parallel workload.xlsx.500k, 0.5.png and b/doc/diagrams/benchmarks-concurrent_map/clang-x86/Parallel workload.xlsx.500k, 0.5.png differ diff --git a/doc/diagrams/benchmarks-concurrent_map/clang-x86/Parallel workload.xlsx.500k, 0.99.png b/doc/diagrams/benchmarks-concurrent_map/clang-x86/Parallel workload.xlsx.500k, 0.99.png index 63656943..8cea336c 100644 Binary files a/doc/diagrams/benchmarks-concurrent_map/clang-x86/Parallel workload.xlsx.500k, 0.99.png and b/doc/diagrams/benchmarks-concurrent_map/clang-x86/Parallel workload.xlsx.500k, 0.99.png differ diff --git a/doc/diagrams/benchmarks-concurrent_map/clang-x86/Parallel workload.xlsx.5M, 0.01.png b/doc/diagrams/benchmarks-concurrent_map/clang-x86/Parallel workload.xlsx.5M, 0.01.png index 2aac2583..eaafbe09 100644 Binary files a/doc/diagrams/benchmarks-concurrent_map/clang-x86/Parallel workload.xlsx.5M, 0.01.png and b/doc/diagrams/benchmarks-concurrent_map/clang-x86/Parallel workload.xlsx.5M, 0.01.png differ diff --git a/doc/diagrams/benchmarks-concurrent_map/clang-x86/Parallel workload.xlsx.5M, 0.5.png b/doc/diagrams/benchmarks-concurrent_map/clang-x86/Parallel workload.xlsx.5M, 0.5.png index f21ed9c3..7acfe495 100644 Binary files a/doc/diagrams/benchmarks-concurrent_map/clang-x86/Parallel workload.xlsx.5M, 0.5.png and b/doc/diagrams/benchmarks-concurrent_map/clang-x86/Parallel workload.xlsx.5M, 0.5.png differ diff --git a/doc/diagrams/benchmarks-concurrent_map/clang-x86/Parallel workload.xlsx.5M, 0.99.png b/doc/diagrams/benchmarks-concurrent_map/clang-x86/Parallel workload.xlsx.5M, 0.99.png index 2d10fb99..f8e4510d 100644 Binary files a/doc/diagrams/benchmarks-concurrent_map/clang-x86/Parallel workload.xlsx.5M, 0.99.png and b/doc/diagrams/benchmarks-concurrent_map/clang-x86/Parallel workload.xlsx.5M, 0.99.png differ diff --git a/doc/diagrams/benchmarks-concurrent_map/gcc-x64/Parallel workload.xlsx.500k, 0.01.png b/doc/diagrams/benchmarks-concurrent_map/gcc-x64/Parallel workload.xlsx.500k, 0.01.png index 7bd41d66..4c44751c 100644 Binary files a/doc/diagrams/benchmarks-concurrent_map/gcc-x64/Parallel workload.xlsx.500k, 0.01.png and b/doc/diagrams/benchmarks-concurrent_map/gcc-x64/Parallel workload.xlsx.500k, 0.01.png differ diff --git a/doc/diagrams/benchmarks-concurrent_map/gcc-x64/Parallel workload.xlsx.500k, 0.5.png b/doc/diagrams/benchmarks-concurrent_map/gcc-x64/Parallel workload.xlsx.500k, 0.5.png index 333a1e03..dca8895e 100644 Binary files a/doc/diagrams/benchmarks-concurrent_map/gcc-x64/Parallel workload.xlsx.500k, 0.5.png and b/doc/diagrams/benchmarks-concurrent_map/gcc-x64/Parallel workload.xlsx.500k, 0.5.png differ diff --git a/doc/diagrams/benchmarks-concurrent_map/gcc-x64/Parallel workload.xlsx.500k, 0.99.png b/doc/diagrams/benchmarks-concurrent_map/gcc-x64/Parallel workload.xlsx.500k, 0.99.png index 284de298..5db70dcd 100644 Binary files a/doc/diagrams/benchmarks-concurrent_map/gcc-x64/Parallel workload.xlsx.500k, 0.99.png and b/doc/diagrams/benchmarks-concurrent_map/gcc-x64/Parallel workload.xlsx.500k, 0.99.png differ diff --git a/doc/diagrams/benchmarks-concurrent_map/gcc-x64/Parallel workload.xlsx.5M, 0.01.png b/doc/diagrams/benchmarks-concurrent_map/gcc-x64/Parallel workload.xlsx.5M, 0.01.png index 09b34a89..703f70c1 100644 Binary files a/doc/diagrams/benchmarks-concurrent_map/gcc-x64/Parallel workload.xlsx.5M, 0.01.png and b/doc/diagrams/benchmarks-concurrent_map/gcc-x64/Parallel workload.xlsx.5M, 0.01.png differ diff --git a/doc/diagrams/benchmarks-concurrent_map/gcc-x64/Parallel workload.xlsx.5M, 0.5.png b/doc/diagrams/benchmarks-concurrent_map/gcc-x64/Parallel workload.xlsx.5M, 0.5.png index a7df48c5..5f8eaf1f 100644 Binary files a/doc/diagrams/benchmarks-concurrent_map/gcc-x64/Parallel workload.xlsx.5M, 0.5.png and b/doc/diagrams/benchmarks-concurrent_map/gcc-x64/Parallel workload.xlsx.5M, 0.5.png differ diff --git a/doc/diagrams/benchmarks-concurrent_map/gcc-x64/Parallel workload.xlsx.5M, 0.99.png b/doc/diagrams/benchmarks-concurrent_map/gcc-x64/Parallel workload.xlsx.5M, 0.99.png index 40dc15a4..223be5f4 100644 Binary files a/doc/diagrams/benchmarks-concurrent_map/gcc-x64/Parallel workload.xlsx.5M, 0.99.png and b/doc/diagrams/benchmarks-concurrent_map/gcc-x64/Parallel workload.xlsx.5M, 0.99.png differ diff --git a/doc/diagrams/benchmarks-concurrent_map/gcc-x86/Parallel workload.xlsx.500k, 0.01.png b/doc/diagrams/benchmarks-concurrent_map/gcc-x86/Parallel workload.xlsx.500k, 0.01.png index 5c0ebdf5..bfd07452 100644 Binary files a/doc/diagrams/benchmarks-concurrent_map/gcc-x86/Parallel workload.xlsx.500k, 0.01.png and b/doc/diagrams/benchmarks-concurrent_map/gcc-x86/Parallel workload.xlsx.500k, 0.01.png differ diff --git a/doc/diagrams/benchmarks-concurrent_map/gcc-x86/Parallel workload.xlsx.500k, 0.5.png b/doc/diagrams/benchmarks-concurrent_map/gcc-x86/Parallel workload.xlsx.500k, 0.5.png index b658b8d2..5c52477f 100644 Binary files a/doc/diagrams/benchmarks-concurrent_map/gcc-x86/Parallel workload.xlsx.500k, 0.5.png and b/doc/diagrams/benchmarks-concurrent_map/gcc-x86/Parallel workload.xlsx.500k, 0.5.png differ diff --git a/doc/diagrams/benchmarks-concurrent_map/gcc-x86/Parallel workload.xlsx.500k, 0.99.png b/doc/diagrams/benchmarks-concurrent_map/gcc-x86/Parallel workload.xlsx.500k, 0.99.png index 0a9885f1..db4ac776 100644 Binary files a/doc/diagrams/benchmarks-concurrent_map/gcc-x86/Parallel workload.xlsx.500k, 0.99.png and b/doc/diagrams/benchmarks-concurrent_map/gcc-x86/Parallel workload.xlsx.500k, 0.99.png differ diff --git a/doc/diagrams/benchmarks-concurrent_map/gcc-x86/Parallel workload.xlsx.5M, 0.01.png b/doc/diagrams/benchmarks-concurrent_map/gcc-x86/Parallel workload.xlsx.5M, 0.01.png index 5c1debb8..419292bc 100644 Binary files a/doc/diagrams/benchmarks-concurrent_map/gcc-x86/Parallel workload.xlsx.5M, 0.01.png and b/doc/diagrams/benchmarks-concurrent_map/gcc-x86/Parallel workload.xlsx.5M, 0.01.png differ diff --git a/doc/diagrams/benchmarks-concurrent_map/gcc-x86/Parallel workload.xlsx.5M, 0.5.png b/doc/diagrams/benchmarks-concurrent_map/gcc-x86/Parallel workload.xlsx.5M, 0.5.png index 72bd9dfc..fcaeef8b 100644 Binary files a/doc/diagrams/benchmarks-concurrent_map/gcc-x86/Parallel workload.xlsx.5M, 0.5.png and b/doc/diagrams/benchmarks-concurrent_map/gcc-x86/Parallel workload.xlsx.5M, 0.5.png differ diff --git a/doc/diagrams/benchmarks-concurrent_map/gcc-x86/Parallel workload.xlsx.5M, 0.99.png b/doc/diagrams/benchmarks-concurrent_map/gcc-x86/Parallel workload.xlsx.5M, 0.99.png index 39c007c3..328e7e4c 100644 Binary files a/doc/diagrams/benchmarks-concurrent_map/gcc-x86/Parallel workload.xlsx.5M, 0.99.png and b/doc/diagrams/benchmarks-concurrent_map/gcc-x86/Parallel workload.xlsx.5M, 0.99.png differ diff --git a/doc/diagrams/benchmarks-concurrent_map/vs-x64/Parallel workload.xlsx.500k, 0.01.png b/doc/diagrams/benchmarks-concurrent_map/vs-x64/Parallel workload.xlsx.500k, 0.01.png index a407d7c9..fc5214ad 100644 Binary files a/doc/diagrams/benchmarks-concurrent_map/vs-x64/Parallel workload.xlsx.500k, 0.01.png and b/doc/diagrams/benchmarks-concurrent_map/vs-x64/Parallel workload.xlsx.500k, 0.01.png differ diff --git a/doc/diagrams/benchmarks-concurrent_map/vs-x64/Parallel workload.xlsx.500k, 0.5.png b/doc/diagrams/benchmarks-concurrent_map/vs-x64/Parallel workload.xlsx.500k, 0.5.png index d6ddebed..f66205a9 100644 Binary files a/doc/diagrams/benchmarks-concurrent_map/vs-x64/Parallel workload.xlsx.500k, 0.5.png and b/doc/diagrams/benchmarks-concurrent_map/vs-x64/Parallel workload.xlsx.500k, 0.5.png differ diff --git a/doc/diagrams/benchmarks-concurrent_map/vs-x64/Parallel workload.xlsx.500k, 0.99.png b/doc/diagrams/benchmarks-concurrent_map/vs-x64/Parallel workload.xlsx.500k, 0.99.png index 100bf11e..6a250a22 100644 Binary files a/doc/diagrams/benchmarks-concurrent_map/vs-x64/Parallel workload.xlsx.500k, 0.99.png and b/doc/diagrams/benchmarks-concurrent_map/vs-x64/Parallel workload.xlsx.500k, 0.99.png differ diff --git a/doc/diagrams/benchmarks-concurrent_map/vs-x64/Parallel workload.xlsx.5M, 0.01.png b/doc/diagrams/benchmarks-concurrent_map/vs-x64/Parallel workload.xlsx.5M, 0.01.png index 2cb29575..12bdb935 100644 Binary files a/doc/diagrams/benchmarks-concurrent_map/vs-x64/Parallel workload.xlsx.5M, 0.01.png and b/doc/diagrams/benchmarks-concurrent_map/vs-x64/Parallel workload.xlsx.5M, 0.01.png differ diff --git a/doc/diagrams/benchmarks-concurrent_map/vs-x64/Parallel workload.xlsx.5M, 0.5.png b/doc/diagrams/benchmarks-concurrent_map/vs-x64/Parallel workload.xlsx.5M, 0.5.png index 43677cf4..1caf8812 100644 Binary files a/doc/diagrams/benchmarks-concurrent_map/vs-x64/Parallel workload.xlsx.5M, 0.5.png and b/doc/diagrams/benchmarks-concurrent_map/vs-x64/Parallel workload.xlsx.5M, 0.5.png differ diff --git a/doc/diagrams/benchmarks-concurrent_map/vs-x64/Parallel workload.xlsx.5M, 0.99.png b/doc/diagrams/benchmarks-concurrent_map/vs-x64/Parallel workload.xlsx.5M, 0.99.png index e83b0da1..3b219885 100644 Binary files a/doc/diagrams/benchmarks-concurrent_map/vs-x64/Parallel workload.xlsx.5M, 0.99.png and b/doc/diagrams/benchmarks-concurrent_map/vs-x64/Parallel workload.xlsx.5M, 0.99.png differ diff --git a/doc/diagrams/benchmarks-concurrent_map/vs-x86/Parallel workload.xlsx.500k, 0.01.png b/doc/diagrams/benchmarks-concurrent_map/vs-x86/Parallel workload.xlsx.500k, 0.01.png index 28d41c72..8137abe5 100644 Binary files a/doc/diagrams/benchmarks-concurrent_map/vs-x86/Parallel workload.xlsx.500k, 0.01.png and b/doc/diagrams/benchmarks-concurrent_map/vs-x86/Parallel workload.xlsx.500k, 0.01.png differ diff --git a/doc/diagrams/benchmarks-concurrent_map/vs-x86/Parallel workload.xlsx.500k, 0.5.png b/doc/diagrams/benchmarks-concurrent_map/vs-x86/Parallel workload.xlsx.500k, 0.5.png index 2e6d780c..1dd8b192 100644 Binary files a/doc/diagrams/benchmarks-concurrent_map/vs-x86/Parallel workload.xlsx.500k, 0.5.png and b/doc/diagrams/benchmarks-concurrent_map/vs-x86/Parallel workload.xlsx.500k, 0.5.png differ diff --git a/doc/diagrams/benchmarks-concurrent_map/vs-x86/Parallel workload.xlsx.500k, 0.99.png b/doc/diagrams/benchmarks-concurrent_map/vs-x86/Parallel workload.xlsx.500k, 0.99.png index 767e5d8c..26bcf2ac 100644 Binary files a/doc/diagrams/benchmarks-concurrent_map/vs-x86/Parallel workload.xlsx.500k, 0.99.png and b/doc/diagrams/benchmarks-concurrent_map/vs-x86/Parallel workload.xlsx.500k, 0.99.png differ diff --git a/doc/diagrams/benchmarks-concurrent_map/vs-x86/Parallel workload.xlsx.5M, 0.01.png b/doc/diagrams/benchmarks-concurrent_map/vs-x86/Parallel workload.xlsx.5M, 0.01.png index a4fe1f91..7eab2b3d 100644 Binary files a/doc/diagrams/benchmarks-concurrent_map/vs-x86/Parallel workload.xlsx.5M, 0.01.png and b/doc/diagrams/benchmarks-concurrent_map/vs-x86/Parallel workload.xlsx.5M, 0.01.png differ diff --git a/doc/diagrams/benchmarks-concurrent_map/vs-x86/Parallel workload.xlsx.5M, 0.5.png b/doc/diagrams/benchmarks-concurrent_map/vs-x86/Parallel workload.xlsx.5M, 0.5.png index b2f5ce93..39abecc9 100644 Binary files a/doc/diagrams/benchmarks-concurrent_map/vs-x86/Parallel workload.xlsx.5M, 0.5.png and b/doc/diagrams/benchmarks-concurrent_map/vs-x86/Parallel workload.xlsx.5M, 0.5.png differ diff --git a/doc/diagrams/benchmarks-concurrent_map/vs-x86/Parallel workload.xlsx.5M, 0.99.png b/doc/diagrams/benchmarks-concurrent_map/vs-x86/Parallel workload.xlsx.5M, 0.99.png index 0745afbd..819e8a8c 100644 Binary files a/doc/diagrams/benchmarks-concurrent_map/vs-x86/Parallel workload.xlsx.5M, 0.99.png and b/doc/diagrams/benchmarks-concurrent_map/vs-x86/Parallel workload.xlsx.5M, 0.99.png differ diff --git a/doc/diagrams/benchmarks-flat_map/clang-arm64/Running erasure.xlsx.plot.png b/doc/diagrams/benchmarks-flat_map/clang-arm64/Running erasure.xlsx.plot.png index dae5cecc..e01caffd 100644 Binary files a/doc/diagrams/benchmarks-flat_map/clang-arm64/Running erasure.xlsx.plot.png and b/doc/diagrams/benchmarks-flat_map/clang-arm64/Running erasure.xlsx.plot.png differ diff --git a/doc/diagrams/benchmarks-flat_map/clang-arm64/Running insertion.xlsx.plot.png b/doc/diagrams/benchmarks-flat_map/clang-arm64/Running insertion.xlsx.plot.png index b1d0f29a..396d7c8c 100644 Binary files a/doc/diagrams/benchmarks-flat_map/clang-arm64/Running insertion.xlsx.plot.png and b/doc/diagrams/benchmarks-flat_map/clang-arm64/Running insertion.xlsx.plot.png differ diff --git a/doc/diagrams/benchmarks-flat_map/clang-arm64/Scattered successful looukp.xlsx.plot.png b/doc/diagrams/benchmarks-flat_map/clang-arm64/Scattered successful looukp.xlsx.plot.png index 26418ad4..82946e47 100644 Binary files a/doc/diagrams/benchmarks-flat_map/clang-arm64/Scattered successful looukp.xlsx.plot.png and b/doc/diagrams/benchmarks-flat_map/clang-arm64/Scattered successful looukp.xlsx.plot.png differ diff --git a/doc/diagrams/benchmarks-flat_map/clang-arm64/Scattered unsuccessful looukp.xlsx.plot.png b/doc/diagrams/benchmarks-flat_map/clang-arm64/Scattered unsuccessful looukp.xlsx.plot.png index a073614d..d745607e 100644 Binary files a/doc/diagrams/benchmarks-flat_map/clang-arm64/Scattered unsuccessful looukp.xlsx.plot.png and b/doc/diagrams/benchmarks-flat_map/clang-arm64/Scattered unsuccessful looukp.xlsx.plot.png differ diff --git a/doc/diagrams/benchmarks-flat_map/clang-x64/Running erasure.xlsx.plot.png b/doc/diagrams/benchmarks-flat_map/clang-x64/Running erasure.xlsx.plot.png index 4ada054c..39c7245b 100644 Binary files a/doc/diagrams/benchmarks-flat_map/clang-x64/Running erasure.xlsx.plot.png and b/doc/diagrams/benchmarks-flat_map/clang-x64/Running erasure.xlsx.plot.png differ diff --git a/doc/diagrams/benchmarks-flat_map/clang-x64/Running insertion.xlsx.plot.png b/doc/diagrams/benchmarks-flat_map/clang-x64/Running insertion.xlsx.plot.png index 497fe908..2e8512ce 100644 Binary files a/doc/diagrams/benchmarks-flat_map/clang-x64/Running insertion.xlsx.plot.png and b/doc/diagrams/benchmarks-flat_map/clang-x64/Running insertion.xlsx.plot.png differ diff --git a/doc/diagrams/benchmarks-flat_map/clang-x64/Scattered successful looukp.xlsx.plot.png b/doc/diagrams/benchmarks-flat_map/clang-x64/Scattered successful looukp.xlsx.plot.png index a658e132..bc0ac6fa 100644 Binary files a/doc/diagrams/benchmarks-flat_map/clang-x64/Scattered successful looukp.xlsx.plot.png and b/doc/diagrams/benchmarks-flat_map/clang-x64/Scattered successful looukp.xlsx.plot.png differ diff --git a/doc/diagrams/benchmarks-flat_map/clang-x64/Scattered unsuccessful looukp.xlsx.plot.png b/doc/diagrams/benchmarks-flat_map/clang-x64/Scattered unsuccessful looukp.xlsx.plot.png index 8256b0b8..2d718f5b 100644 Binary files a/doc/diagrams/benchmarks-flat_map/clang-x64/Scattered unsuccessful looukp.xlsx.plot.png and b/doc/diagrams/benchmarks-flat_map/clang-x64/Scattered unsuccessful looukp.xlsx.plot.png differ diff --git a/doc/diagrams/benchmarks-flat_map/clang-x86/Running erasure.xlsx.plot.png b/doc/diagrams/benchmarks-flat_map/clang-x86/Running erasure.xlsx.plot.png index db8d5e61..671e700e 100644 Binary files a/doc/diagrams/benchmarks-flat_map/clang-x86/Running erasure.xlsx.plot.png and b/doc/diagrams/benchmarks-flat_map/clang-x86/Running erasure.xlsx.plot.png differ diff --git a/doc/diagrams/benchmarks-flat_map/clang-x86/Running insertion.xlsx.plot.png b/doc/diagrams/benchmarks-flat_map/clang-x86/Running insertion.xlsx.plot.png index 5ee39bfc..f745cc2c 100644 Binary files a/doc/diagrams/benchmarks-flat_map/clang-x86/Running insertion.xlsx.plot.png and b/doc/diagrams/benchmarks-flat_map/clang-x86/Running insertion.xlsx.plot.png differ diff --git a/doc/diagrams/benchmarks-flat_map/clang-x86/Scattered successful looukp.xlsx.plot.png b/doc/diagrams/benchmarks-flat_map/clang-x86/Scattered successful looukp.xlsx.plot.png index 2d9d1862..62aace55 100644 Binary files a/doc/diagrams/benchmarks-flat_map/clang-x86/Scattered successful looukp.xlsx.plot.png and b/doc/diagrams/benchmarks-flat_map/clang-x86/Scattered successful looukp.xlsx.plot.png differ diff --git a/doc/diagrams/benchmarks-flat_map/clang-x86/Scattered unsuccessful looukp.xlsx.plot.png b/doc/diagrams/benchmarks-flat_map/clang-x86/Scattered unsuccessful looukp.xlsx.plot.png index 35987cfa..1e997b3d 100644 Binary files a/doc/diagrams/benchmarks-flat_map/clang-x86/Scattered unsuccessful looukp.xlsx.plot.png and b/doc/diagrams/benchmarks-flat_map/clang-x86/Scattered unsuccessful looukp.xlsx.plot.png differ diff --git a/doc/diagrams/benchmarks-flat_map/gcc-x64/Running erasure.xlsx.plot.png b/doc/diagrams/benchmarks-flat_map/gcc-x64/Running erasure.xlsx.plot.png index ed8d753e..cfde3d48 100644 Binary files a/doc/diagrams/benchmarks-flat_map/gcc-x64/Running erasure.xlsx.plot.png and b/doc/diagrams/benchmarks-flat_map/gcc-x64/Running erasure.xlsx.plot.png differ diff --git a/doc/diagrams/benchmarks-flat_map/gcc-x64/Running insertion.xlsx.plot.png b/doc/diagrams/benchmarks-flat_map/gcc-x64/Running insertion.xlsx.plot.png index 0764d4d8..95f1129a 100644 Binary files a/doc/diagrams/benchmarks-flat_map/gcc-x64/Running insertion.xlsx.plot.png and b/doc/diagrams/benchmarks-flat_map/gcc-x64/Running insertion.xlsx.plot.png differ diff --git a/doc/diagrams/benchmarks-flat_map/gcc-x64/Scattered successful looukp.xlsx.plot.png b/doc/diagrams/benchmarks-flat_map/gcc-x64/Scattered successful looukp.xlsx.plot.png index 6db08040..dd2db3cd 100644 Binary files a/doc/diagrams/benchmarks-flat_map/gcc-x64/Scattered successful looukp.xlsx.plot.png and b/doc/diagrams/benchmarks-flat_map/gcc-x64/Scattered successful looukp.xlsx.plot.png differ diff --git a/doc/diagrams/benchmarks-flat_map/gcc-x64/Scattered unsuccessful looukp.xlsx.plot.png b/doc/diagrams/benchmarks-flat_map/gcc-x64/Scattered unsuccessful looukp.xlsx.plot.png index ad6f45c9..163f6b7e 100644 Binary files a/doc/diagrams/benchmarks-flat_map/gcc-x64/Scattered unsuccessful looukp.xlsx.plot.png and b/doc/diagrams/benchmarks-flat_map/gcc-x64/Scattered unsuccessful looukp.xlsx.plot.png differ diff --git a/doc/diagrams/benchmarks-flat_map/gcc-x86/Running erasure.xlsx.plot.png b/doc/diagrams/benchmarks-flat_map/gcc-x86/Running erasure.xlsx.plot.png index d672b370..3f84432a 100644 Binary files a/doc/diagrams/benchmarks-flat_map/gcc-x86/Running erasure.xlsx.plot.png and b/doc/diagrams/benchmarks-flat_map/gcc-x86/Running erasure.xlsx.plot.png differ diff --git a/doc/diagrams/benchmarks-flat_map/gcc-x86/Running insertion.xlsx.plot.png b/doc/diagrams/benchmarks-flat_map/gcc-x86/Running insertion.xlsx.plot.png index 64ffc15a..9429d442 100644 Binary files a/doc/diagrams/benchmarks-flat_map/gcc-x86/Running insertion.xlsx.plot.png and b/doc/diagrams/benchmarks-flat_map/gcc-x86/Running insertion.xlsx.plot.png differ diff --git a/doc/diagrams/benchmarks-flat_map/gcc-x86/Scattered successful looukp.xlsx.plot.png b/doc/diagrams/benchmarks-flat_map/gcc-x86/Scattered successful looukp.xlsx.plot.png index d3c4f3bf..2cb8519d 100644 Binary files a/doc/diagrams/benchmarks-flat_map/gcc-x86/Scattered successful looukp.xlsx.plot.png and b/doc/diagrams/benchmarks-flat_map/gcc-x86/Scattered successful looukp.xlsx.plot.png differ diff --git a/doc/diagrams/benchmarks-flat_map/gcc-x86/Scattered unsuccessful looukp.xlsx.plot.png b/doc/diagrams/benchmarks-flat_map/gcc-x86/Scattered unsuccessful looukp.xlsx.plot.png index 0e7b1d57..75a9c32e 100644 Binary files a/doc/diagrams/benchmarks-flat_map/gcc-x86/Scattered unsuccessful looukp.xlsx.plot.png and b/doc/diagrams/benchmarks-flat_map/gcc-x86/Scattered unsuccessful looukp.xlsx.plot.png differ diff --git a/doc/diagrams/benchmarks-flat_map/vs-x64/Running erasure.xlsx.plot.png b/doc/diagrams/benchmarks-flat_map/vs-x64/Running erasure.xlsx.plot.png index 85b38ef5..1b06622b 100644 Binary files a/doc/diagrams/benchmarks-flat_map/vs-x64/Running erasure.xlsx.plot.png and b/doc/diagrams/benchmarks-flat_map/vs-x64/Running erasure.xlsx.plot.png differ diff --git a/doc/diagrams/benchmarks-flat_map/vs-x64/Running insertion.xlsx.plot.png b/doc/diagrams/benchmarks-flat_map/vs-x64/Running insertion.xlsx.plot.png index cb7b35cf..d58edb85 100644 Binary files a/doc/diagrams/benchmarks-flat_map/vs-x64/Running insertion.xlsx.plot.png and b/doc/diagrams/benchmarks-flat_map/vs-x64/Running insertion.xlsx.plot.png differ diff --git a/doc/diagrams/benchmarks-flat_map/vs-x64/Scattered successful looukp.xlsx.plot.png b/doc/diagrams/benchmarks-flat_map/vs-x64/Scattered successful looukp.xlsx.plot.png index e1cbc684..f6346791 100644 Binary files a/doc/diagrams/benchmarks-flat_map/vs-x64/Scattered successful looukp.xlsx.plot.png and b/doc/diagrams/benchmarks-flat_map/vs-x64/Scattered successful looukp.xlsx.plot.png differ diff --git a/doc/diagrams/benchmarks-flat_map/vs-x64/Scattered unsuccessful looukp.xlsx.plot.png b/doc/diagrams/benchmarks-flat_map/vs-x64/Scattered unsuccessful looukp.xlsx.plot.png index f6bc65cd..565ab758 100644 Binary files a/doc/diagrams/benchmarks-flat_map/vs-x64/Scattered unsuccessful looukp.xlsx.plot.png and b/doc/diagrams/benchmarks-flat_map/vs-x64/Scattered unsuccessful looukp.xlsx.plot.png differ diff --git a/doc/diagrams/benchmarks-flat_map/vs-x86/Running erasure.xlsx.plot.png b/doc/diagrams/benchmarks-flat_map/vs-x86/Running erasure.xlsx.plot.png index 142b18ab..35a52fe5 100644 Binary files a/doc/diagrams/benchmarks-flat_map/vs-x86/Running erasure.xlsx.plot.png and b/doc/diagrams/benchmarks-flat_map/vs-x86/Running erasure.xlsx.plot.png differ diff --git a/doc/diagrams/benchmarks-flat_map/vs-x86/Running insertion.xlsx.plot.png b/doc/diagrams/benchmarks-flat_map/vs-x86/Running insertion.xlsx.plot.png index 1d821410..f0fc8012 100644 Binary files a/doc/diagrams/benchmarks-flat_map/vs-x86/Running insertion.xlsx.plot.png and b/doc/diagrams/benchmarks-flat_map/vs-x86/Running insertion.xlsx.plot.png differ diff --git a/doc/diagrams/benchmarks-flat_map/vs-x86/Scattered successful looukp.xlsx.plot.png b/doc/diagrams/benchmarks-flat_map/vs-x86/Scattered successful looukp.xlsx.plot.png index a8d67d7a..708c86b4 100644 Binary files a/doc/diagrams/benchmarks-flat_map/vs-x86/Scattered successful looukp.xlsx.plot.png and b/doc/diagrams/benchmarks-flat_map/vs-x86/Scattered successful looukp.xlsx.plot.png differ diff --git a/doc/diagrams/benchmarks-flat_map/vs-x86/Scattered unsuccessful looukp.xlsx.plot.png b/doc/diagrams/benchmarks-flat_map/vs-x86/Scattered unsuccessful looukp.xlsx.plot.png index ca591cff..4ec67969 100644 Binary files a/doc/diagrams/benchmarks-flat_map/vs-x86/Scattered unsuccessful looukp.xlsx.plot.png and b/doc/diagrams/benchmarks-flat_map/vs-x86/Scattered unsuccessful looukp.xlsx.plot.png differ diff --git a/doc/diagrams/benchmarks-set/clang_libcpp/running insertion.xlsx.practice non-unique 5.png b/doc/diagrams/benchmarks-set/clang_libcpp/running insertion.xlsx.practice non-unique 5.png index a12433de..7c1870bc 100644 Binary files a/doc/diagrams/benchmarks-set/clang_libcpp/running insertion.xlsx.practice non-unique 5.png and b/doc/diagrams/benchmarks-set/clang_libcpp/running insertion.xlsx.practice non-unique 5.png differ diff --git a/doc/diagrams/benchmarks-set/clang_libcpp/running insertion.xlsx.practice non-unique.png b/doc/diagrams/benchmarks-set/clang_libcpp/running insertion.xlsx.practice non-unique.png index 1e4888e5..fd4b3c3f 100644 Binary files a/doc/diagrams/benchmarks-set/clang_libcpp/running insertion.xlsx.practice non-unique.png and b/doc/diagrams/benchmarks-set/clang_libcpp/running insertion.xlsx.practice non-unique.png differ diff --git a/doc/diagrams/benchmarks-set/clang_libcpp/running insertion.xlsx.practice norehash non-unique 5.png b/doc/diagrams/benchmarks-set/clang_libcpp/running insertion.xlsx.practice norehash non-unique 5.png index 75ffde9b..61ed9643 100644 Binary files a/doc/diagrams/benchmarks-set/clang_libcpp/running insertion.xlsx.practice norehash non-unique 5.png and b/doc/diagrams/benchmarks-set/clang_libcpp/running insertion.xlsx.practice norehash non-unique 5.png differ diff --git a/doc/diagrams/benchmarks-set/clang_libcpp/running insertion.xlsx.practice norehash non-unique.png b/doc/diagrams/benchmarks-set/clang_libcpp/running insertion.xlsx.practice norehash non-unique.png index 23c62f97..a7be6483 100644 Binary files a/doc/diagrams/benchmarks-set/clang_libcpp/running insertion.xlsx.practice norehash non-unique.png and b/doc/diagrams/benchmarks-set/clang_libcpp/running insertion.xlsx.practice norehash non-unique.png differ diff --git a/doc/diagrams/benchmarks-set/clang_libcpp/running insertion.xlsx.practice norehash.png b/doc/diagrams/benchmarks-set/clang_libcpp/running insertion.xlsx.practice norehash.png index ec484cf7..11569d6d 100644 Binary files a/doc/diagrams/benchmarks-set/clang_libcpp/running insertion.xlsx.practice norehash.png and b/doc/diagrams/benchmarks-set/clang_libcpp/running insertion.xlsx.practice norehash.png differ diff --git a/doc/diagrams/benchmarks-set/clang_libcpp/running insertion.xlsx.practice.png b/doc/diagrams/benchmarks-set/clang_libcpp/running insertion.xlsx.practice.png index 96bf66ff..8b901f31 100644 Binary files a/doc/diagrams/benchmarks-set/clang_libcpp/running insertion.xlsx.practice.png and b/doc/diagrams/benchmarks-set/clang_libcpp/running insertion.xlsx.practice.png differ diff --git a/doc/diagrams/benchmarks-set/clang_libcpp/scattered erasure by key.xlsx.practice non-unique 5.png b/doc/diagrams/benchmarks-set/clang_libcpp/scattered erasure by key.xlsx.practice non-unique 5.png index 0fae21db..46c3201d 100644 Binary files a/doc/diagrams/benchmarks-set/clang_libcpp/scattered erasure by key.xlsx.practice non-unique 5.png and b/doc/diagrams/benchmarks-set/clang_libcpp/scattered erasure by key.xlsx.practice non-unique 5.png differ diff --git a/doc/diagrams/benchmarks-set/clang_libcpp/scattered erasure by key.xlsx.practice non-unique.png b/doc/diagrams/benchmarks-set/clang_libcpp/scattered erasure by key.xlsx.practice non-unique.png index 748964f5..09f6bf78 100644 Binary files a/doc/diagrams/benchmarks-set/clang_libcpp/scattered erasure by key.xlsx.practice non-unique.png and b/doc/diagrams/benchmarks-set/clang_libcpp/scattered erasure by key.xlsx.practice non-unique.png differ diff --git a/doc/diagrams/benchmarks-set/clang_libcpp/scattered erasure.xlsx.practice non-unique 5.png b/doc/diagrams/benchmarks-set/clang_libcpp/scattered erasure.xlsx.practice non-unique 5.png index 5f30091b..91fc8981 100644 Binary files a/doc/diagrams/benchmarks-set/clang_libcpp/scattered erasure.xlsx.practice non-unique 5.png and b/doc/diagrams/benchmarks-set/clang_libcpp/scattered erasure.xlsx.practice non-unique 5.png differ diff --git a/doc/diagrams/benchmarks-set/clang_libcpp/scattered erasure.xlsx.practice non-unique.png b/doc/diagrams/benchmarks-set/clang_libcpp/scattered erasure.xlsx.practice non-unique.png index bb24c096..c11d25f4 100644 Binary files a/doc/diagrams/benchmarks-set/clang_libcpp/scattered erasure.xlsx.practice non-unique.png and b/doc/diagrams/benchmarks-set/clang_libcpp/scattered erasure.xlsx.practice non-unique.png differ diff --git a/doc/diagrams/benchmarks-set/clang_libcpp/scattered erasure.xlsx.practice.png b/doc/diagrams/benchmarks-set/clang_libcpp/scattered erasure.xlsx.practice.png index 9170a1e9..94c7dadb 100644 Binary files a/doc/diagrams/benchmarks-set/clang_libcpp/scattered erasure.xlsx.practice.png and b/doc/diagrams/benchmarks-set/clang_libcpp/scattered erasure.xlsx.practice.png differ diff --git a/doc/diagrams/benchmarks-set/clang_libcpp/scattered successful looukp.xlsx.practice non-unique 5.png b/doc/diagrams/benchmarks-set/clang_libcpp/scattered successful looukp.xlsx.practice non-unique 5.png index 498e8924..9c275163 100644 Binary files a/doc/diagrams/benchmarks-set/clang_libcpp/scattered successful looukp.xlsx.practice non-unique 5.png and b/doc/diagrams/benchmarks-set/clang_libcpp/scattered successful looukp.xlsx.practice non-unique 5.png differ diff --git a/doc/diagrams/benchmarks-set/clang_libcpp/scattered successful looukp.xlsx.practice non-unique.png b/doc/diagrams/benchmarks-set/clang_libcpp/scattered successful looukp.xlsx.practice non-unique.png index 0836576b..67b14fb5 100644 Binary files a/doc/diagrams/benchmarks-set/clang_libcpp/scattered successful looukp.xlsx.practice non-unique.png and b/doc/diagrams/benchmarks-set/clang_libcpp/scattered successful looukp.xlsx.practice non-unique.png differ diff --git a/doc/diagrams/benchmarks-set/clang_libcpp/scattered successful looukp.xlsx.practice.png b/doc/diagrams/benchmarks-set/clang_libcpp/scattered successful looukp.xlsx.practice.png index 5e61c49a..87a02fb7 100644 Binary files a/doc/diagrams/benchmarks-set/clang_libcpp/scattered successful looukp.xlsx.practice.png and b/doc/diagrams/benchmarks-set/clang_libcpp/scattered successful looukp.xlsx.practice.png differ diff --git a/doc/diagrams/benchmarks-set/clang_libcpp/scattered unsuccessful looukp.xlsx.practice non-unique 5.png b/doc/diagrams/benchmarks-set/clang_libcpp/scattered unsuccessful looukp.xlsx.practice non-unique 5.png index 6b023124..9f68a843 100644 Binary files a/doc/diagrams/benchmarks-set/clang_libcpp/scattered unsuccessful looukp.xlsx.practice non-unique 5.png and b/doc/diagrams/benchmarks-set/clang_libcpp/scattered unsuccessful looukp.xlsx.practice non-unique 5.png differ diff --git a/doc/diagrams/benchmarks-set/clang_libcpp/scattered unsuccessful looukp.xlsx.practice non-unique.png b/doc/diagrams/benchmarks-set/clang_libcpp/scattered unsuccessful looukp.xlsx.practice non-unique.png index f41986be..253f8147 100644 Binary files a/doc/diagrams/benchmarks-set/clang_libcpp/scattered unsuccessful looukp.xlsx.practice non-unique.png and b/doc/diagrams/benchmarks-set/clang_libcpp/scattered unsuccessful looukp.xlsx.practice non-unique.png differ diff --git a/doc/diagrams/benchmarks-set/clang_libcpp/scattered unsuccessful looukp.xlsx.practice.png b/doc/diagrams/benchmarks-set/clang_libcpp/scattered unsuccessful looukp.xlsx.practice.png index e0aae171..9b857ddb 100644 Binary files a/doc/diagrams/benchmarks-set/clang_libcpp/scattered unsuccessful looukp.xlsx.practice.png and b/doc/diagrams/benchmarks-set/clang_libcpp/scattered unsuccessful looukp.xlsx.practice.png differ diff --git a/doc/diagrams/benchmarks-set/gcc/running insertion.xlsx.practice non-unique 5.png b/doc/diagrams/benchmarks-set/gcc/running insertion.xlsx.practice non-unique 5.png index b0902aa2..1ebff77e 100644 Binary files a/doc/diagrams/benchmarks-set/gcc/running insertion.xlsx.practice non-unique 5.png and b/doc/diagrams/benchmarks-set/gcc/running insertion.xlsx.practice non-unique 5.png differ diff --git a/doc/diagrams/benchmarks-set/gcc/running insertion.xlsx.practice non-unique.png b/doc/diagrams/benchmarks-set/gcc/running insertion.xlsx.practice non-unique.png index 56d9c345..a00c9cbd 100644 Binary files a/doc/diagrams/benchmarks-set/gcc/running insertion.xlsx.practice non-unique.png and b/doc/diagrams/benchmarks-set/gcc/running insertion.xlsx.practice non-unique.png differ diff --git a/doc/diagrams/benchmarks-set/gcc/running insertion.xlsx.practice norehash non-unique 5.png b/doc/diagrams/benchmarks-set/gcc/running insertion.xlsx.practice norehash non-unique 5.png index d48963af..b5408eba 100644 Binary files a/doc/diagrams/benchmarks-set/gcc/running insertion.xlsx.practice norehash non-unique 5.png and b/doc/diagrams/benchmarks-set/gcc/running insertion.xlsx.practice norehash non-unique 5.png differ diff --git a/doc/diagrams/benchmarks-set/gcc/running insertion.xlsx.practice norehash non-unique.png b/doc/diagrams/benchmarks-set/gcc/running insertion.xlsx.practice norehash non-unique.png index 3b3be467..77870d8b 100644 Binary files a/doc/diagrams/benchmarks-set/gcc/running insertion.xlsx.practice norehash non-unique.png and b/doc/diagrams/benchmarks-set/gcc/running insertion.xlsx.practice norehash non-unique.png differ diff --git a/doc/diagrams/benchmarks-set/gcc/running insertion.xlsx.practice norehash.png b/doc/diagrams/benchmarks-set/gcc/running insertion.xlsx.practice norehash.png index 7f802adf..97f54b2e 100644 Binary files a/doc/diagrams/benchmarks-set/gcc/running insertion.xlsx.practice norehash.png and b/doc/diagrams/benchmarks-set/gcc/running insertion.xlsx.practice norehash.png differ diff --git a/doc/diagrams/benchmarks-set/gcc/running insertion.xlsx.practice.png b/doc/diagrams/benchmarks-set/gcc/running insertion.xlsx.practice.png index b933a41b..f2e9492d 100644 Binary files a/doc/diagrams/benchmarks-set/gcc/running insertion.xlsx.practice.png and b/doc/diagrams/benchmarks-set/gcc/running insertion.xlsx.practice.png differ diff --git a/doc/diagrams/benchmarks-set/gcc/scattered erasure by key.xlsx.practice non-unique 5.png b/doc/diagrams/benchmarks-set/gcc/scattered erasure by key.xlsx.practice non-unique 5.png index 7bb06b8b..0b5f9754 100644 Binary files a/doc/diagrams/benchmarks-set/gcc/scattered erasure by key.xlsx.practice non-unique 5.png and b/doc/diagrams/benchmarks-set/gcc/scattered erasure by key.xlsx.practice non-unique 5.png differ diff --git a/doc/diagrams/benchmarks-set/gcc/scattered erasure by key.xlsx.practice non-unique.png b/doc/diagrams/benchmarks-set/gcc/scattered erasure by key.xlsx.practice non-unique.png index 75c7c0f0..ea7b0509 100644 Binary files a/doc/diagrams/benchmarks-set/gcc/scattered erasure by key.xlsx.practice non-unique.png and b/doc/diagrams/benchmarks-set/gcc/scattered erasure by key.xlsx.practice non-unique.png differ diff --git a/doc/diagrams/benchmarks-set/gcc/scattered erasure.xlsx.practice non-unique 5.png b/doc/diagrams/benchmarks-set/gcc/scattered erasure.xlsx.practice non-unique 5.png index fb64c82c..87f92cb7 100644 Binary files a/doc/diagrams/benchmarks-set/gcc/scattered erasure.xlsx.practice non-unique 5.png and b/doc/diagrams/benchmarks-set/gcc/scattered erasure.xlsx.practice non-unique 5.png differ diff --git a/doc/diagrams/benchmarks-set/gcc/scattered erasure.xlsx.practice non-unique.png b/doc/diagrams/benchmarks-set/gcc/scattered erasure.xlsx.practice non-unique.png index e20f3b99..5041acda 100644 Binary files a/doc/diagrams/benchmarks-set/gcc/scattered erasure.xlsx.practice non-unique.png and b/doc/diagrams/benchmarks-set/gcc/scattered erasure.xlsx.practice non-unique.png differ diff --git a/doc/diagrams/benchmarks-set/gcc/scattered erasure.xlsx.practice.png b/doc/diagrams/benchmarks-set/gcc/scattered erasure.xlsx.practice.png index 00ff29f8..babc4e3f 100644 Binary files a/doc/diagrams/benchmarks-set/gcc/scattered erasure.xlsx.practice.png and b/doc/diagrams/benchmarks-set/gcc/scattered erasure.xlsx.practice.png differ diff --git a/doc/diagrams/benchmarks-set/gcc/scattered successful looukp.xlsx.practice non-unique 5.png b/doc/diagrams/benchmarks-set/gcc/scattered successful looukp.xlsx.practice non-unique 5.png index 20f70064..805b5876 100644 Binary files a/doc/diagrams/benchmarks-set/gcc/scattered successful looukp.xlsx.practice non-unique 5.png and b/doc/diagrams/benchmarks-set/gcc/scattered successful looukp.xlsx.practice non-unique 5.png differ diff --git a/doc/diagrams/benchmarks-set/gcc/scattered successful looukp.xlsx.practice non-unique.png b/doc/diagrams/benchmarks-set/gcc/scattered successful looukp.xlsx.practice non-unique.png index b862d818..c5dcf5a0 100644 Binary files a/doc/diagrams/benchmarks-set/gcc/scattered successful looukp.xlsx.practice non-unique.png and b/doc/diagrams/benchmarks-set/gcc/scattered successful looukp.xlsx.practice non-unique.png differ diff --git a/doc/diagrams/benchmarks-set/gcc/scattered successful looukp.xlsx.practice.png b/doc/diagrams/benchmarks-set/gcc/scattered successful looukp.xlsx.practice.png index c64f7113..255c272c 100644 Binary files a/doc/diagrams/benchmarks-set/gcc/scattered successful looukp.xlsx.practice.png and b/doc/diagrams/benchmarks-set/gcc/scattered successful looukp.xlsx.practice.png differ diff --git a/doc/diagrams/benchmarks-set/gcc/scattered unsuccessful looukp.xlsx.practice non-unique 5.png b/doc/diagrams/benchmarks-set/gcc/scattered unsuccessful looukp.xlsx.practice non-unique 5.png index 5b917b4c..931ef55c 100644 Binary files a/doc/diagrams/benchmarks-set/gcc/scattered unsuccessful looukp.xlsx.practice non-unique 5.png and b/doc/diagrams/benchmarks-set/gcc/scattered unsuccessful looukp.xlsx.practice non-unique 5.png differ diff --git a/doc/diagrams/benchmarks-set/gcc/scattered unsuccessful looukp.xlsx.practice non-unique.png b/doc/diagrams/benchmarks-set/gcc/scattered unsuccessful looukp.xlsx.practice non-unique.png index cea38eba..735e3183 100644 Binary files a/doc/diagrams/benchmarks-set/gcc/scattered unsuccessful looukp.xlsx.practice non-unique.png and b/doc/diagrams/benchmarks-set/gcc/scattered unsuccessful looukp.xlsx.practice non-unique.png differ diff --git a/doc/diagrams/benchmarks-set/gcc/scattered unsuccessful looukp.xlsx.practice.png b/doc/diagrams/benchmarks-set/gcc/scattered unsuccessful looukp.xlsx.practice.png index 3622cca7..2f4d61c9 100644 Binary files a/doc/diagrams/benchmarks-set/gcc/scattered unsuccessful looukp.xlsx.practice.png and b/doc/diagrams/benchmarks-set/gcc/scattered unsuccessful looukp.xlsx.practice.png differ diff --git a/doc/diagrams/benchmarks-set/vs/running insertion.xlsx.practice non-unique 5.png b/doc/diagrams/benchmarks-set/vs/running insertion.xlsx.practice non-unique 5.png index f40f0f81..863f5d67 100644 Binary files a/doc/diagrams/benchmarks-set/vs/running insertion.xlsx.practice non-unique 5.png and b/doc/diagrams/benchmarks-set/vs/running insertion.xlsx.practice non-unique 5.png differ diff --git a/doc/diagrams/benchmarks-set/vs/running insertion.xlsx.practice non-unique.png b/doc/diagrams/benchmarks-set/vs/running insertion.xlsx.practice non-unique.png index 342e7c99..91546ddb 100644 Binary files a/doc/diagrams/benchmarks-set/vs/running insertion.xlsx.practice non-unique.png and b/doc/diagrams/benchmarks-set/vs/running insertion.xlsx.practice non-unique.png differ diff --git a/doc/diagrams/benchmarks-set/vs/running insertion.xlsx.practice norehash non-unique 5.png b/doc/diagrams/benchmarks-set/vs/running insertion.xlsx.practice norehash non-unique 5.png index 6fde0a3f..f11c9eb2 100644 Binary files a/doc/diagrams/benchmarks-set/vs/running insertion.xlsx.practice norehash non-unique 5.png and b/doc/diagrams/benchmarks-set/vs/running insertion.xlsx.practice norehash non-unique 5.png differ diff --git a/doc/diagrams/benchmarks-set/vs/running insertion.xlsx.practice norehash non-unique.png b/doc/diagrams/benchmarks-set/vs/running insertion.xlsx.practice norehash non-unique.png index 32d1c19d..c60d3e83 100644 Binary files a/doc/diagrams/benchmarks-set/vs/running insertion.xlsx.practice norehash non-unique.png and b/doc/diagrams/benchmarks-set/vs/running insertion.xlsx.practice norehash non-unique.png differ diff --git a/doc/diagrams/benchmarks-set/vs/running insertion.xlsx.practice norehash.png b/doc/diagrams/benchmarks-set/vs/running insertion.xlsx.practice norehash.png index 37402bab..ceb79bb4 100644 Binary files a/doc/diagrams/benchmarks-set/vs/running insertion.xlsx.practice norehash.png and b/doc/diagrams/benchmarks-set/vs/running insertion.xlsx.practice norehash.png differ diff --git a/doc/diagrams/benchmarks-set/vs/running insertion.xlsx.practice.png b/doc/diagrams/benchmarks-set/vs/running insertion.xlsx.practice.png index a267db18..7f9ec959 100644 Binary files a/doc/diagrams/benchmarks-set/vs/running insertion.xlsx.practice.png and b/doc/diagrams/benchmarks-set/vs/running insertion.xlsx.practice.png differ diff --git a/doc/diagrams/benchmarks-set/vs/scattered erasure by key.xlsx.practice non-unique 5.png b/doc/diagrams/benchmarks-set/vs/scattered erasure by key.xlsx.practice non-unique 5.png index b5f4013b..0b25793a 100644 Binary files a/doc/diagrams/benchmarks-set/vs/scattered erasure by key.xlsx.practice non-unique 5.png and b/doc/diagrams/benchmarks-set/vs/scattered erasure by key.xlsx.practice non-unique 5.png differ diff --git a/doc/diagrams/benchmarks-set/vs/scattered erasure by key.xlsx.practice non-unique.png b/doc/diagrams/benchmarks-set/vs/scattered erasure by key.xlsx.practice non-unique.png index 7f99ecd3..fe8bd367 100644 Binary files a/doc/diagrams/benchmarks-set/vs/scattered erasure by key.xlsx.practice non-unique.png and b/doc/diagrams/benchmarks-set/vs/scattered erasure by key.xlsx.practice non-unique.png differ diff --git a/doc/diagrams/benchmarks-set/vs/scattered erasure.xlsx.practice non-unique 5.png b/doc/diagrams/benchmarks-set/vs/scattered erasure.xlsx.practice non-unique 5.png index d8f1e263..142de003 100644 Binary files a/doc/diagrams/benchmarks-set/vs/scattered erasure.xlsx.practice non-unique 5.png and b/doc/diagrams/benchmarks-set/vs/scattered erasure.xlsx.practice non-unique 5.png differ diff --git a/doc/diagrams/benchmarks-set/vs/scattered erasure.xlsx.practice non-unique.png b/doc/diagrams/benchmarks-set/vs/scattered erasure.xlsx.practice non-unique.png index 65faa5c4..94416751 100644 Binary files a/doc/diagrams/benchmarks-set/vs/scattered erasure.xlsx.practice non-unique.png and b/doc/diagrams/benchmarks-set/vs/scattered erasure.xlsx.practice non-unique.png differ diff --git a/doc/diagrams/benchmarks-set/vs/scattered erasure.xlsx.practice.png b/doc/diagrams/benchmarks-set/vs/scattered erasure.xlsx.practice.png index 23aa4929..d59c1b63 100644 Binary files a/doc/diagrams/benchmarks-set/vs/scattered erasure.xlsx.practice.png and b/doc/diagrams/benchmarks-set/vs/scattered erasure.xlsx.practice.png differ diff --git a/doc/diagrams/benchmarks-set/vs/scattered successful looukp.xlsx.practice non-unique 5.png b/doc/diagrams/benchmarks-set/vs/scattered successful looukp.xlsx.practice non-unique 5.png index 01fa7108..8eb2a9b2 100644 Binary files a/doc/diagrams/benchmarks-set/vs/scattered successful looukp.xlsx.practice non-unique 5.png and b/doc/diagrams/benchmarks-set/vs/scattered successful looukp.xlsx.practice non-unique 5.png differ diff --git a/doc/diagrams/benchmarks-set/vs/scattered successful looukp.xlsx.practice non-unique.png b/doc/diagrams/benchmarks-set/vs/scattered successful looukp.xlsx.practice non-unique.png index 7a5d80e7..9cd03ce8 100644 Binary files a/doc/diagrams/benchmarks-set/vs/scattered successful looukp.xlsx.practice non-unique.png and b/doc/diagrams/benchmarks-set/vs/scattered successful looukp.xlsx.practice non-unique.png differ diff --git a/doc/diagrams/benchmarks-set/vs/scattered successful looukp.xlsx.practice.png b/doc/diagrams/benchmarks-set/vs/scattered successful looukp.xlsx.practice.png index 8e1a40fb..ee9f8350 100644 Binary files a/doc/diagrams/benchmarks-set/vs/scattered successful looukp.xlsx.practice.png and b/doc/diagrams/benchmarks-set/vs/scattered successful looukp.xlsx.practice.png differ diff --git a/doc/diagrams/benchmarks-set/vs/scattered unsuccessful looukp.xlsx.practice non-unique 5.png b/doc/diagrams/benchmarks-set/vs/scattered unsuccessful looukp.xlsx.practice non-unique 5.png index 971757b8..5a1a1cae 100644 Binary files a/doc/diagrams/benchmarks-set/vs/scattered unsuccessful looukp.xlsx.practice non-unique 5.png and b/doc/diagrams/benchmarks-set/vs/scattered unsuccessful looukp.xlsx.practice non-unique 5.png differ diff --git a/doc/diagrams/benchmarks-set/vs/scattered unsuccessful looukp.xlsx.practice non-unique.png b/doc/diagrams/benchmarks-set/vs/scattered unsuccessful looukp.xlsx.practice non-unique.png index 40147d99..d717a31a 100644 Binary files a/doc/diagrams/benchmarks-set/vs/scattered unsuccessful looukp.xlsx.practice non-unique.png and b/doc/diagrams/benchmarks-set/vs/scattered unsuccessful looukp.xlsx.practice non-unique.png differ diff --git a/doc/diagrams/benchmarks-set/vs/scattered unsuccessful looukp.xlsx.practice.png b/doc/diagrams/benchmarks-set/vs/scattered unsuccessful looukp.xlsx.practice.png index 12a15bbc..eba120e8 100644 Binary files a/doc/diagrams/benchmarks-set/vs/scattered unsuccessful looukp.xlsx.practice.png and b/doc/diagrams/benchmarks-set/vs/scattered unsuccessful looukp.xlsx.practice.png differ diff --git a/extra/boost_unordered.natvis b/extra/boost_unordered.natvis index ff5e5640..58ba0427 100644 --- a/extra/boost_unordered.natvis +++ b/extra/boost_unordered.natvis @@ -170,7 +170,7 @@ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) - + diff --git a/include/boost/unordered/detail/foa/core.hpp b/include/boost/unordered/detail/foa/core.hpp index db73a866..e89a21cf 100644 --- a/include/boost/unordered/detail/foa/core.hpp +++ b/include/boost/unordered/detail/foa/core.hpp @@ -41,7 +41,7 @@ #include #if defined(BOOST_UNORDERED_ENABLE_STATS) -#include +#include #endif #if !defined(BOOST_UNORDERED_DISABLE_SSE2) diff --git a/include/boost/unordered/detail/cumulative_stats.hpp b/include/boost/unordered/detail/foa/cumulative_stats.hpp similarity index 92% rename from include/boost/unordered/detail/cumulative_stats.hpp rename to include/boost/unordered/detail/foa/cumulative_stats.hpp index 1378c0db..13a15747 100644 --- a/include/boost/unordered/detail/cumulative_stats.hpp +++ b/include/boost/unordered/detail/foa/cumulative_stats.hpp @@ -6,8 +6,8 @@ * See https://www.boost.org/libs/unordered for library home page. */ -#ifndef BOOST_UNORDERED_DETAIL_CUMULATIVE_STATS_HPP -#define BOOST_UNORDERED_DETAIL_CUMULATIVE_STATS_HPP +#ifndef BOOST_UNORDERED_DETAIL_FOA_CUMULATIVE_STATS_HPP +#define BOOST_UNORDERED_DETAIL_FOA_CUMULATIVE_STATS_HPP #include #include @@ -16,12 +16,14 @@ #include #if defined(BOOST_HAS_THREADS) +#include #include #endif namespace boost{ namespace unordered{ namespace detail{ +namespace foa{ /* Cumulative one-pass calculation of the average, variance and deviation of * running sequences. @@ -117,7 +119,7 @@ template class concurrent_cumulative_stats:cumulative_stats { using super=cumulative_stats; - using lock_guard=std::lock_guard; + using lock_guard=std::lock_guard; public: using summary=typename super::summary; @@ -157,7 +159,7 @@ public: private: concurrent_cumulative_stats(const super& x,lock_guard&&):super{x}{} - mutable std::mutex mut; + mutable rw_spinlock mut; }; #else @@ -167,6 +169,7 @@ using concurrent_cumulative_stats=cumulative_stats; #endif +} /* namespace foa */ } /* namespace detail */ } /* namespace unordered */ } /* namespace boost */ diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index 6a7fadd6..256b8489 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -1,6 +1,7 @@ # Copyright 2006-2008 Daniel James. # Copyright 2022-2023 Christian Mazakas +# Copyright 2024 Joaquin M Lopez Munoz # Distributed under the Boost Software License, Version 1.0. (See accompanying # file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) @@ -367,6 +368,27 @@ run cfoa/serialization_tests.cpp /boost/serialization//boost_serialization/off : cfoa_serialization_tests ; +rule make_cfoa_interprocess_concurrency_tests ( name : defines ? ) +{ + run cfoa/interprocess_concurrency_tests.cpp /boost/filesystem//boost_filesystem : : + : $(defines) + off + static + clang-3.5:no # Boost.Process does not compile + clang-3.6:no # idem + clang-3.7:no # idem + clang-3.8:no # idem + cygwin:no + : $(name) ; +} + +make_cfoa_interprocess_concurrency_tests cfoa_interproc_conc_tests ; + +make_cfoa_interprocess_concurrency_tests cfoa_interproc_conc_tests_stats + : BOOST_UNORDERED_ENABLE_STATS ; + alias cfoa_tests : cfoa_$(CFOA_TESTS) - cfoa_serialization_tests ; + cfoa_serialization_tests + cfoa_interproc_conc_tests + cfoa_interproc_conc_tests_stats ; diff --git a/test/cfoa/interprocess_concurrency_tests.cpp b/test/cfoa/interprocess_concurrency_tests.cpp new file mode 100644 index 00000000..5cfeea45 --- /dev/null +++ b/test/cfoa/interprocess_concurrency_tests.cpp @@ -0,0 +1,114 @@ +// Copyright (C) 2024 Joaquin M Lopez Munoz +// Distributed under the Boost Software License, Version 1.0. (See accompanying +// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +namespace bip=boost::interprocess; + +static char const* container_name = "shared_map"; +static char const* start_name = "shared_start"; +static constexpr int NUM_OPS_PER_CHILD = 10000; + +using value_type = std::pair; +using allocator = bip::allocator< + value_type, bip::managed_shared_memory::segment_manager>; +using container = boost::concurrent_flat_map< + int, int, boost::hash, std::equal_to, allocator>; + +int parent(const char* exe_name) +{ + static constexpr int NUM_CHILDS = 10; + static constexpr std::size_t SEGMENT_SIZE = 64*1024; + + std::string segment_name_str = to_string(boost::uuids::random_generator()()); + auto* segment_name = segment_name_str.c_str(); + + struct segment_remover + { + char const* name; + + segment_remover(char const* name_) : name(name_) + { + bip::shared_memory_object::remove(name); + } + ~segment_remover() + { + bip::shared_memory_object::remove(name); + } + } remover(segment_name); + + bip::managed_shared_memory segment( + bip::create_only, segment_name, SEGMENT_SIZE); + container& c = *segment.construct(container_name)( + allocator(segment.get_segment_manager())); + std::atomic_int& start = *segment.construct(start_name)(0); + + std::vector children; + for (int i = 0; i < NUM_CHILDS; ++i) { + children.emplace_back(exe_name, std::to_string(i), segment_name); + } + + start.store(1); + + for (auto& child : children) { + child.wait(); + BOOST_TEST_EQ(child.exit_code(), 0); + } + + int num_ops = 0; + c.cvisit_all([&](const value_type& x) { + num_ops += x.second; + }); + BOOST_TEST_EQ(num_ops, NUM_CHILDS * NUM_OPS_PER_CHILD); + + return boost::report_errors(); +} + +int child(int id,const char* segment_name) +{ + bip::managed_shared_memory segment(bip::open_only, segment_name); + container& c = *segment.find(container_name).first; + std::atomic_int& start = *segment.find(start_name).first; + + while(!start.load()){ + std::this_thread::sleep_for(std::chrono::milliseconds(1)); + } + + std::mt19937 rnd((unsigned int) id); + std::geometric_distribution d(0.15); + + for(int i = 0; i < NUM_OPS_PER_CHILD; ++i) { + c.emplace_or_visit(d(rnd), 1, [&](value_type& x) { + ++x.second; + + // artificially increase contention + volatile unsigned int n = 10000; + while(n--) ; + }); + } + return 0; +} + +int main(int argc, char** argv) +{ + if (argc == 1) { + return parent(argv[0]); + } + else { + return child(std::atoi(argv[1]),argv[2]); + } +}