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

Brainfuck interpreter

Interpreter-inside-interpreter: a host language interpreting a Brainfuck program. The purest measurement of dispatch cost we have.

Compile time · median (cold)

median of 7 runs

Native Gocompiled
108 ms108×
Pipitbytecode VM
1.00 msbaseline
CPython 3.14bytecode VM
396 µs0.39×
PyPy 7.3tracing JIT
302 µs0.30×
Ttengobytecode VM
245 µs0.24×
Sscriggobytecode VM
271 µs0.27×
Mmvmbytecode VM
344 µs0.34×
YyaegiAST walker
385 µs0.38×

Full statistics

RunnerNCompileRuntimeP95StddevRSSvs pipitStatus
Native Gocompiled7108 ms28.0 µs29.3 µs1.27 µs1.62 GiB108×OK
Pipitbytecode VM71.00 ms163 µs951 µs276 µs591 MiB1.00×OK
CPython 3.14bytecode VM7396 µs357 µs361 µs5.51 µsn/a0.39×OK
PyPy 7.3tracing JIT7302 µs2.56 ms2.68 ms55.5 µsn/a0.30×OK
tengobytecode VM7245 µs11.9 ms12.2 ms180 µs1.69 GiB0.24×OK
scriggobytecode VM7271 µs536 µs871 µs171 µs1.69 GiB0.27×OK
mvmbytecode VM7344 µs1.74 ms1.82 ms34.4 µs1.69 GiB0.34×OK
yaegiAST walker7385 µs1.71 ms1.72 ms7.82 µs1.69 GiB0.38×OK
Workload & symmetry rules

Workload

Host language interprets a small Brainfuck program. Every BF instruction is one full dispatch through the host's interpreter loop. Output is a 32-bit fold over the emitted bytes.

Symmetry rules

  • No third-party BF library, no eval-based execution, no threaded-code tricks.
  • Bracket jump table built once at start.
  • Switch / if-elif dispatch on opcode character.

Why this is the purest dispatch benchmark

Every BF instruction is one host-language switch + one memory access. A 2× faster dispatch loop is a 2× faster wall time. The workload has no library escape hatch.

Source code