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.

Compile time · median (cold)

median of 10 runs

Native Gocompiled
181 ms70.4×
Piko interpbytecode VM
2.58 msbaseline
CPython 3.13bytecode VM
627 µs0.24×
PyPy 7.3tracing JIT
496 µs0.19×
Ttengobytecode VM
372 µs0.14×
Sscriggobytecode VM
n/a
Mmvmbytecode VM
679 µs0.26×
YyaegiAST walker
812 µs0.31×

Full statistics

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