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.

Runtime · median per inner-loop window

median of 7 runs

Native Gocompiled
114 µs0.04×
Pipitbytecode VM
3.00 msbaseline
CPython 3.14bytecode VM
18.8 ms6.25×
PyPy 7.3tracing JIT
10.3 ms3.43×
Ttengobytecode VM
n/a
Sscriggobytecode VM
15.4 ms5.12×
Mmvmbytecode VM
19.0 ms6.31×
YyaegiAST walker
34.7 ms11.6×

Full statistics

RunnerNCompileRuntimeP95StddevRSSvs pipitStatus
Native Gocompiled7109 ms114 µs115 µs1.19 µs83 MiB0.04×OK
Pipitbytecode VM7505 µs3.00 ms4.14 ms439 µs58 MiB1.00×OK
CPython 3.14bytecode VM7246 µs18.8 ms19.2 ms238 µsn/a6.25×OK
PyPy 7.3tracing JIT7183 µs10.3 ms10.7 ms382 µsn/a3.43×OK
tengobytecode VM0n/an/an/an/an/an/ano data
scriggobytecode VM7130 µs15.4 ms18.3 ms1.02 ms64 MiB5.12×OK
mvmbytecode VM7207 µs19.0 ms30.6 ms4.11 ms64 MiB6.31×OK
yaegiAST walker7228 µs34.7 ms43.8 ms6.28 ms64 MiB11.6×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