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

Mini JSON parse

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

Runtime · median per inner-loop window

median of 7 runs

Native Gocompiled
13.6 ms0.12×
Pipitbytecode VM
117 msbaseline
CPython 3.14bytecode VM
171 ms1.46×
PyPy 7.3tracing JIT
121 ms1.03×
Ttengobytecode VM
n/a
Sscriggobytecode VM
n/a
Mmvmbytecode VM
348 ms2.98×
YyaegiAST walker
1.65 s14.1×

Full statistics

RunnerNCompileRuntimeP95StddevRSSvs pipitStatus
Native Gocompiled7113 ms13.6 ms14.7 ms534 µs451 MiB0.12×OK
Pipitbytecode VM72.85 ms117 ms122 ms2.07 ms311 MiB1.00×OK
CPython 3.14bytecode VM7908 µs171 ms180 ms4.07 msn/a1.46×OK
PyPy 7.3tracing JIT7697 µs121 ms138 ms8.26 msn/a1.03×OK
tengobytecode VM0n/an/an/an/an/an/ano data
scriggobytecode VM0n/an/an/an/an/an/aunsupported
mvmbytecode VM7864 µs348 ms401 ms21.8 ms1.52 GiB2.98×OK
yaegiAST walker7852 µs1.65 s1.77 s73.5 ms1.52 GiB14.1×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