aboutsummaryrefslogtreecommitdiffstats
path: root/README.md
diff options
context:
space:
mode:
authorFabrice <fabrice@schaub-dev.xyz>2026-04-13 00:07:16 +0200
committerFabrice <fabrice@schaub-dev.xyz>2026-04-13 00:07:16 +0200
commitd6db9a6f5b7eefce182dcde4ed86cae7170a23e5 (patch)
tree6f1b356cbf43474d4b587c12e9cacb1985838eb8 /README.md
parentb748cd62e130ac54e317b284013cac0537ca6c5a (diff)
adding bash and zsh
Diffstat (limited to 'README.md')
-rw-r--r--README.md5
1 files changed, 4 insertions, 1 deletions
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.
---