Host
Intel Core Ultra 9 285K · 24 cores
Platform
linux/amd64
Go
go1.27.0
CPython
python:3.14-slim
PyPy
pypy:3.11-slim
Runs / combo
7 + 2 warmup

Open-addressing hash map

Hand-rolled FNV-1a hash table, 100k mixed put/get/delete operations. No built-in map allowed.

Runtime · median per inner-loop window

median of 7 runs

Native Gocompiled
22.6 ms0.08×
Pipitbytecode VM
292 msbaseline
CPython 3.14bytecode VM
659 ms2.25×
PyPy 7.3tracing JIT
94.5 ms0.32×
Ttengobytecode VM
1.60 s5.46×
Sscriggobytecode VM
n/a
Mmvmbytecode VM
764 ms2.61×
YyaegiAST walker
1.47 s5.01×

Full statistics

RunnerNCompileRuntimeP95StddevRSSvs pipitStatus
Native Gocompiled7108 ms22.6 ms24.1 ms553 µs1.62 GiB0.08×OK
Pipitbytecode VM72.44 ms292 ms308 ms6.38 ms591 MiB1.00×OK
CPython 3.14bytecode VM7769 µs659 ms660 ms3.23 msn/a2.25×OK
PyPy 7.3tracing JIT7544 µs94.5 ms110 ms7.14 msn/a0.32×OK
tengobytecode VM7408 µs1.60 s1.62 s28.8 ms1.69 GiB5.46×OK
scriggobytecode VM0n/an/an/an/an/an/aunsupported
mvmbytecode VM7738 µs764 ms774 ms4.74 ms1.69 GiB2.61×OK
yaegiAST walker7628 µs1.47 s1.51 s31.9 ms1.69 GiB5.01×OK
Workload & symmetry rules

Workload

Build a HashTable with parallel keys[], values[], and state[] arrays (0=empty, 1=occupied, 2=tombstone). Linear probing on collision, doubles capacity when load > 70%. Hash function is byte-by-byte FNV-1a. A deterministic LCG drives 100,000 mixed operations.

Symmetry rules

  • No built-in map / dict anywhere in the hot path.
  • No built-in or stdlib hash functions; FNV-1a must be hand-rolled.
  • Power-of-two capacity, linear probing, tombstone deletes: every runner uses the same algorithm.

Why this benchmark exists

Pure interpreter throughput without the cheat of a C-level hash table. Reveals what the interpreter's array / arithmetic / loop performance looks like under sustained load.

Source code