Host
Intel Core Ultra 9 285K · 24 cores
Platform
linux/amd64
Go
go1.26.0
CPython
python:3.13-slim
PyPy
pypy:3.10-slim
Runs / combo
10 + 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 10 runs

Native Gocompiled
22.5 ms0.04×
Piko interpbytecode VM
506 msbaseline
CPython 3.13bytecode VM
673 ms1.33×
PyPy 7.3tracing JIT
89.1 ms0.18×
Ttengobytecode VM
1.71 s3.39×
Sscriggobytecode VM
n/a
Mmvmbytecode VM
1.05 s2.08×
YyaegiAST walker
1.76 s3.49×

Full statistics

RunnerNCompileRuntimeP95StddevRSSvs pikoStatus
Native Gocompiled10181 ms22.5 ms22.7 ms191 µs68 MiB0.04×OK
Piko interpbytecode VM102.58 ms506 ms508 ms1.04 ms313 MiB1.00×OK
CPython 3.13bytecode VM10627 µs673 ms684 ms9.35 msn/a1.33×OK
PyPy 7.3tracing JIT10496 µs89.1 ms93.1 ms1.45 msn/a0.18×OK
tengobytecode VM10372 µs1.71 s1.78 s34.1 ms3.07 GiB3.39×OK
scriggobytecode VM0n/an/an/an/an/an/aunsupported
mvmbytecode VM10679 µs1.05 s1.08 s11.0 ms70 MiB2.08×OK
yaegiAST walker10812 µs1.76 s1.90 s103 ms74 MiB3.49×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