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

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 10 runs

Native Gocompiled
183 ms185×
Piko interpbytecode VM
993 µsbaseline
CPython 3.13bytecode VM
324 µs0.33×
PyPy 7.3tracing JIT
277 µs0.28×
Ttengobytecode VM
292 µs0.29×
Sscriggobytecode VM
274 µs0.28×
Mmvmbytecode VM
327 µs0.33×
YyaegiAST walker
404 µs0.41×

Full statistics

RunnerNCompileRuntimeP95StddevRSSvs pikoStatus
Native Gocompiled10183 ms28.3 µs29.3 µs729 ns68 MiB185×OK
Piko interpbytecode VM10993 µs294 µs336 µs18.6 µs91 MiB1.00×OK
CPython 3.13bytecode VM10324 µs388 µs406 µs12.9 µsn/a0.33×OK
PyPy 7.3tracing JIT10277 µs3.06 ms3.15 ms60.7 µsn/a0.28×OK
tengobytecode VM10292 µs17.7 ms18.3 ms241 µs297 MiB0.29×OK
scriggobytecode VM10274 µs506 µs852 µs106 µs74 MiB0.28×OK
mvmbytecode VM10327 µs2.39 ms3.62 ms378 µs62 MiB0.33×OK
yaegiAST walker10404 µs1.72 ms2.00 ms247 µs62 MiB0.41×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