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.

Runtime · median per inner-loop window

median of 10 runs

Native Gocompiled
28.3 µs0.10×
Piko interpbytecode VM
294 µsbaseline
CPython 3.13bytecode VM
388 µs1.32×
PyPy 7.3tracing JIT
3.06 ms10.4×
Ttengobytecode VM
17.7 ms60.3×
Sscriggobytecode VM
506 µs1.72×
Mmvmbytecode VM
2.39 ms8.15×
YyaegiAST walker
1.72 ms5.85×

Full statistics

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