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.

Runtime · median per inner-loop window

median of 10 runs

Native Gocompiled
114 µs0.02×
Piko interpbytecode VM
6.58 msbaseline
CPython 3.13bytecode VM
17.1 ms2.60×
PyPy 7.3tracing JIT
8.10 ms1.23×
Ttengobytecode VM
n/a
Sscriggobytecode VM
15.3 ms2.32×
Mmvmbytecode VM
33.7 ms5.13×
YyaegiAST walker
28.1 ms4.27×

Full statistics

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