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

Mandelbrot (FP)

Escape-time render of the Mandelbrot set at 200×200 with 80 iters/pixel. Pure float64 tight loop.

Compile time · median (cold)

median of 10 runs

Native Gocompiled
181 ms246×
Piko interpbytecode VM
735 µsbaseline
CPython 3.13bytecode VM
262 µs0.36×
PyPy 7.3tracing JIT
237 µs0.32×
Ttengobytecode VM
208 µs0.28×
Sscriggobytecode VM
236 µs0.32×
Mmvmbytecode VM
274 µs0.37×
YyaegiAST walker
304 µs0.41×

Full statistics

RunnerNCompileRuntimeP95StddevRSSvs pikoStatus
Native Gocompiled10181 ms3.38 ms3.39 ms4.30 µs69 MiB246×OK
Piko interpbytecode VM10735 µs28.8 ms29.4 ms226 µs82 MiB1.00×OK
CPython 3.13bytecode VM10262 µs140 ms147 ms3.26 msn/a0.36×OK
PyPy 7.3tracing JIT10237 µs11.0 ms11.3 ms175 µsn/a0.32×OK
tengobytecode VM10208 µs269 ms278 ms3.54 ms1.45 GiB0.28×OK
scriggobytecode VM10236 µs199 ms230 ms9.41 ms72 MiB0.32×OK
mvmbytecode VM10274 µs291 ms322 ms22.1 ms62 MiB0.37×OK
yaegiAST walker10304 µs237 ms266 ms15.0 ms66 MiB0.41×OK
Workload & symmetry rules

Workload

For each of 200×200 pixels: iterate the Mandelbrot recurrence z = z² + c up to 80 times, count the iteration at which |z| > 2. Output the sum of iteration counts so canonical hashing doesn't depend on FP equality.

Symmetry rules

  • Pure float64 scalar arithmetic (no complex type, no numpy, no math.cmath).
  • Inner loop manually unrolled per the README's reference shape; no language-specific shortcuts.

Why this benchmark exists

The one shape of work missing from the rest of the suite: a tight float64 inner loop. This is where piko's typed float register bank pays its biggest dividend.

Source code