From e5f0a15e3069cd37ec9656ff3fbe3b17b95c5075 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ion=20Gazta=C3=B1aga?= Date: Sat, 6 Jun 2026 19:30:52 +0200 Subject: [PATCH] Add geomean summary tables to hub's performance chapter --- doc/container.qbk | 96 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 96 insertions(+) diff --git a/doc/container.qbk b/doc/container.qbk index 6de3803..0b61677 100644 --- a/doc/container.qbk +++ b/doc/container.qbk @@ -1078,6 +1078,100 @@ Benchmarks cover all the combinations of Values show the relative execution time of `plf::hive` with respect to `boost::container::hub` (e.g. "1.2" means `boost::container::hub` is 1.2 times faster than `plf::hive`). +[*Summary] + +The following per-compiler tables condense the [link container.non_standard_containers.hub.hub_performance.hub_detailed_results +detailed results] below: each value is the geomean of all the measurements taken for a given element size and scenario, +that is, the geomean over the 10 erase rates (['r] = 0, 0.1, ..., 0.9) and the 5 container sizes +(['n] = 10[super 3], 10[super 4], ..., 10[super 7]), up to 50 values per cell (fewer when some large-container +measurements are not available, as happens for 32-bit builds with the biggest element sizes). As above, a value +greater than 1 means `boost::container::hub` is that many times faster than `plf::hive`. + +[*GCC 15, x64] +[pre +-------------------------------------------------------------------------------------------- +| sizeof | insert, erase, insert | ins, erase, ins, destroy | range for | for_each | sort | +-------------------------------------------------------------------------------------------- +| 16 | 1.70 | 1.63 | 1.04 | 1.60 | 0.97 | +| 32 | 1.63 | 1.58 | 1.04 | 1.46 | 1.11 | +| 64 | 1.72 | 1.51 | 1.04 | 1.35 | 1.09 | +| 80 | 1.79 | 1.70 | 1.01 | 1.17 | 1.07 | +-------------------------------------------------------------------------------------------- +] + +[*Clang 20, x64] +[pre +-------------------------------------------------------------------------------------------- +| sizeof | insert, erase, insert | ins, erase, ins, destroy | range for | for_each | sort | +-------------------------------------------------------------------------------------------- +| 16 | 2.03 | 2.12 | 1.77 | 2.06 | 0.97 | +| 32 | 2.38 | 2.33 | 1.63 | 1.93 | 1.20 | +| 64 | 2.75 | 2.30 | 1.43 | 1.58 | 1.18 | +| 80 | 2.84 | 2.50 | 1.35 | 1.38 | 1.16 | +-------------------------------------------------------------------------------------------- +] + +[*Clang 17, ARM64] +[pre +-------------------------------------------------------------------------------------------- +| sizeof | insert, erase, insert | ins, erase, ins, destroy | range for | for_each | sort | +-------------------------------------------------------------------------------------------- +| 16 | 1.51 | 1.69 | 1.58 | 2.29 | 0.97 | +| 32 | 1.60 | 1.86 | 1.57 | 2.16 | 1.35 | +| 64 | 1.72 | 1.71 | 1.50 | 1.86 | 1.21 | +| 80 | 1.69 | 1.65 | 1.35 | 1.80 | 1.24 | +-------------------------------------------------------------------------------------------- +] + +[*VS 2022, x64] +[pre +-------------------------------------------------------------------------------------------- +| sizeof | insert, erase, insert | ins, erase, ins, destroy | range for | for_each | sort | +-------------------------------------------------------------------------------------------- +| 16 | 1.21 | 1.23 | 1.36 | 1.21 | 0.97 | +| 32 | 1.21 | 1.23 | 1.27 | 1.20 | 1.25 | +| 64 | 1.28 | 1.25 | 1.23 | 1.16 | 1.21 | +| 80 | 1.30 | 1.30 | 1.23 | 1.17 | 1.22 | +-------------------------------------------------------------------------------------------- +] + +[*GCC 15, x86] +[pre +-------------------------------------------------------------------------------------------- +| sizeof | insert, erase, insert | ins, erase, ins, destroy | range for | for_each | sort | +-------------------------------------------------------------------------------------------- +| 16 | 1.28 | 1.22 | 0.68 | 1.28 | 1.05 | +| 32 | 1.33 | 1.25 | 0.71 | 1.21 | 0.99 | +| 64 | 1.39 | 1.26 | 0.72 | 1.14 | 0.92 | +| 80 | 1.35 | 1.25 | 0.74 | 1.09 | 0.87 | +-------------------------------------------------------------------------------------------- +] + +[*Clang 20, x86] +[pre +-------------------------------------------------------------------------------------------- +| sizeof | insert, erase, insert | ins, erase, ins, destroy | range for | for_each | sort | +-------------------------------------------------------------------------------------------- +| 16 | 1.36 | 1.32 | 0.64 | 1.10 | 1.14 | +| 32 | 1.45 | 1.40 | 0.67 | 1.10 | 1.11 | +| 64 | 1.64 | 1.53 | 0.68 | 1.04 | 1.01 | +| 80 | 1.77 | 1.63 | 0.65 | 1.06 | 0.96 | +-------------------------------------------------------------------------------------------- +] + +[*VS 2022, x86] +[pre +-------------------------------------------------------------------------------------------- +| sizeof | insert, erase, insert | ins, erase, ins, destroy | range for | for_each | sort | +-------------------------------------------------------------------------------------------- +| 16 | 1.16 | 1.16 | 0.56 | 0.80 | 1.09 | +| 32 | 1.14 | 1.15 | 0.57 | 0.83 | 1.14 | +| 64 | 1.21 | 1.22 | 0.59 | 0.83 | 1.01 | +| 80 | 1.20 | 1.23 | 0.57 | 0.83 | 1.00 | +-------------------------------------------------------------------------------------------- +] + +[section:hub_detailed_results Detailed results] [section:hub_gcc_15_x64 GCC 15, x64] @@ -1763,6 +1857,8 @@ Values show the relative execution time of `plf::hive` with respect to `boost::c [endsect] +[endsect] + [section:extended_functionality Extended functionality: Basic extensions] [section:default_initialialization Default initialization for vector-like containers]