From d6db9a6f5b7eefce182dcde4ed86cae7170a23e5 Mon Sep 17 00:00:00 2001 From: Fabrice Date: Mon, 13 Apr 2026 00:07:16 +0200 Subject: adding bash and zsh --- README.md | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'README.md') diff --git a/README.md b/README.md index 9f9f05c..51da2e2 100644 --- a/README.md +++ b/README.md @@ -115,6 +115,8 @@ int main(void) { | Ada Hashed_Maps (GNAT) | ~147 | [4] | | std::unordered_map | ~176 | | | Python dict | ~193 | | +| zsh assoc array | ~5100 | [5] | +| bash assoc array | ~7000 | [5] | > **Note on extended L3 cache:** The test machine has a split cache topology where the benchmark's ~32 MB working set fits comfortably in one cache domain but thrashes in the other. Best times above reflect lucky scheduling onto the larger cache. Average times are roughly 1.5-2x higher. Pin with `numactl --cpunodebind=0` for reproducible results. @@ -123,7 +125,8 @@ int main(void) { **[1]** abseil is the reference Swiss table implementation. **[2]** std::unordered_map is chained; mimalloc recovers ~38% by reducing per-node allocation cost. Without it: ~176 ms. **[3]** D's built-in associative array uses per-entry heap allocation; no open-addressing or SIMD. -**[4]** Ada's `Ada.Containers.Hashed_Maps` is also chained; `Hash_Type` is 32-bit so the mixing hash is truncated, reducing distribution quality slightly. +**[4]** Ada's `Ada.Containers.Hashed_Maps` is also chained; `Hash_Type` is 32-bit so the mixing hash is truncated, reducing distribution quality slightly. +**[5]** Measured at N=10,000 (100x smaller) and extrapolated. Shells are not meant for this. --- -- cgit v1.2.3