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

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

Native Gocompiled
183 ms299×
Piko interpbytecode VM
611 µsbaseline
CPython 3.13bytecode VM
200 µs0.33×
PyPy 7.3tracing JIT
182 µs0.30×
Ttengobytecode VM
n/a
Sscriggobytecode VM
142 µs0.23×
Mmvmbytecode VM
144 µs0.24×
YyaegiAST walker
189 µs0.31×

Full statistics

RunnerNCompileRuntimeP95StddevRSSvs pikoStatus
Native Gocompiled10183 ms114 µs115 µs1.43 µs68 MiB299×OK
Piko interpbytecode VM10611 µs6.58 ms9.55 ms1.02 ms82 MiB1.00×OK
CPython 3.13bytecode VM10200 µs17.1 ms17.7 ms315 µsn/a0.33×OK
PyPy 7.3tracing JIT10182 µs8.10 ms9.38 ms480 µsn/a0.30×OK
tengobytecode VM0n/an/an/an/an/an/aunsupported
scriggobytecode VM10142 µs15.3 ms18.0 ms812 µs70 MiB0.23×OK
mvmbytecode VM10144 µs33.7 ms53.1 ms7.12 ms62 MiB0.24×OK
yaegiAST walker10189 µs28.1 ms32.0 ms1.19 ms62 MiB0.31×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