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

Iterative Fibonacci

Compute fib(100k) mod 2^64 with hand-rolled integer-to-decimal. Tests integer arithmetic and tight-loop dispatch.

Compile time · median (cold)

median of 7 runs

Native Gocompiled
109 ms215×
Pipitbytecode VM
505 µsbaseline
CPython 3.14bytecode VM
246 µs0.49×
PyPy 7.3tracing JIT
183 µs0.36×
Ttengobytecode VM
n/a
Sscriggobytecode VM
130 µs0.26×
Mmvmbytecode VM
207 µs0.41×
YyaegiAST walker
228 µs0.45×

Full statistics

RunnerNCompileRuntimeP95StddevRSSvs pipitStatus
Native Gocompiled7109 ms114 µs115 µs1.19 µs83 MiB215×OK
Pipitbytecode VM7505 µs3.00 ms4.14 ms439 µs58 MiB1.00×OK
CPython 3.14bytecode VM7246 µs18.8 ms19.2 ms238 µsn/a0.49×OK
PyPy 7.3tracing JIT7183 µs10.3 ms10.7 ms382 µsn/a0.36×OK
tengobytecode VM0n/an/an/an/an/an/ano data
scriggobytecode VM7130 µs15.4 ms18.3 ms1.02 ms64 MiB0.26×OK
mvmbytecode VM7207 µs19.0 ms30.6 ms4.11 ms64 MiB0.41×OK
yaegiAST walker7228 µs34.7 ms43.8 ms6.28 ms64 MiB0.45×OK
Workload & symmetry rules

Workload

100,000 iterations of next = (a + b) & 0xFFFFFFFFFFFFFFFF, then hand-rolled int-to-decimal of the result.

Symmetry rules

  • Hand-rolled int-to-decimal in every runner (no strconv.FormatUint, no str(), no f"{n}").
  • Pure integer arithmetic; no math calls.
  • Explicit 64-bit mask in Python so it matches Go's uint64 wrap.

Why this is a fair interpreter benchmark

Every step of the work is interpreter-bound; halving dispatch overhead halves the wall time. There is no library call on the hot path.

Source code