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.

Runtime · median per inner-loop window

median of 7 runs

Native Gocompiled
28.0 µs0.17×
Pipitbytecode VM
163 µsbaseline
CPython 3.14bytecode VM
357 µs2.20×
PyPy 7.3tracing JIT
2.56 ms15.7×
Ttengobytecode VM
11.9 ms73.3×
Sscriggobytecode VM
536 µs3.30×
Mmvmbytecode VM
1.74 ms10.7×
YyaegiAST walker
1.71 ms10.5×

Full statistics

RunnerNCompileRuntimeP95StddevRSSvs pipitStatus
Native Gocompiled7108 ms28.0 µs29.3 µs1.27 µs1.62 GiB0.17×OK
Pipitbytecode VM71.00 ms163 µs951 µs276 µs591 MiB1.00×OK
CPython 3.14bytecode VM7396 µs357 µs361 µs5.51 µsn/a2.20×OK
PyPy 7.3tracing JIT7302 µs2.56 ms2.68 ms55.5 µsn/a15.7×OK
tengobytecode VM7245 µs11.9 ms12.2 ms180 µs1.69 GiB73.3×OK
scriggobytecode VM7271 µs536 µs871 µs171 µs1.69 GiB3.30×OK
mvmbytecode VM7344 µs1.74 ms1.82 ms34.4 µs1.69 GiB10.7×OK
yaegiAST walker7385 µs1.71 ms1.72 ms7.82 µs1.69 GiB10.5×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