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

Mini JSON parse

Hand-rolled JSON parser over a 100 KiB document with mixed nesting.

Compile time · median (cold)

median of 10 runs

Native Gocompiled
182 ms67.4×
Piko interpbytecode VM
2.69 msbaseline
CPython 3.13bytecode VM
732 µs0.27×
PyPy 7.3tracing JIT
574 µs0.21×
Ttengobytecode VM
n/a
Sscriggobytecode VM
n/a
Mmvmbytecode VM
815 µs0.30×
YyaegiAST walker
732 µs0.27×

Full statistics

RunnerNCompileRuntimeP95StddevRSSvs pikoStatus
Native Gocompiled10182 ms12.6 ms12.8 ms272 µs68 MiB67.4×OK
Piko interpbytecode VM102.69 ms208 ms232 ms10.4 ms2.38 GiB1.00×OK
CPython 3.13bytecode VM10732 µs186 ms189 ms3.74 msn/a0.27×OK
PyPy 7.3tracing JIT10574 µs101 ms104 ms1.88 msn/a0.21×OK
tengobytecode VM0n/an/an/an/an/an/aunsupported
scriggobytecode VM0n/an/an/an/an/an/aunsupported
mvmbytecode VM10815 µs434 ms478 ms24.1 ms148 MiB0.30×OK
yaegiAST walker10732 µs2.14 s2.36 s86.5 ms1.13 GiB0.27×OK
Workload & symmetry rules

Workload

Parse a 100 KiB JSON document into a generic tree, then walk the tree and sum every integer node. Print the sum.

Symmetry rules

  • Hand-rolled recursive-descent parser; no encoding/json, no json.loads.
  • Returns a tagged-union tree, walked by switch/match.
Source code