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.

Runtime · median per inner-loop window

median of 10 runs

Native Gocompiled
12.6 ms0.06×
Piko interpbytecode VM
208 msbaseline
CPython 3.13bytecode VM
186 ms0.89×
PyPy 7.3tracing JIT
101 ms0.48×
Ttengobytecode VM
n/a
Sscriggobytecode VM
n/a
Mmvmbytecode VM
434 ms2.09×
YyaegiAST walker
2.14 s10.3×

Full statistics

RunnerNCompileRuntimeP95StddevRSSvs pikoStatus
Native Gocompiled10182 ms12.6 ms12.8 ms272 µs68 MiB0.06×OK
Piko interpbytecode VM102.69 ms208 ms232 ms10.4 ms2.38 GiB1.00×OK
CPython 3.13bytecode VM10732 µs186 ms189 ms3.74 msn/a0.89×OK
PyPy 7.3tracing JIT10574 µs101 ms104 ms1.88 msn/a0.48×OK
tengobytecode VM0n/an/an/an/an/an/aunsupported
scriggobytecode VM0n/an/an/an/an/an/aunsupported
mvmbytecode VM10815 µs434 ms478 ms24.1 ms148 MiB2.09×OK
yaegiAST walker10732 µs2.14 s2.36 s86.5 ms1.13 GiB10.3×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