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

Expression evaluator

Tokenise then evaluate 10,000 arithmetic expressions (mixed +, -, *, /, parens).

Runtime · median per inner-loop window

median of 7 runs

Native Gocompiled
61.9 ms0.05×
Pipitbytecode VM
1.21 sbaseline
CPython 3.14bytecode VM
1.31 s1.08×
PyPy 7.3tracing JIT
258 ms0.21×
Ttengobytecode VM
4.19 s3.45×
Sscriggobytecode VM
n/a
Mmvmbytecode VM
4.21 s3.47×
YyaegiAST walker
9.86 s8.12×

Full statistics

RunnerNCompileRuntimeP95StddevRSSvs pipitStatus
Native Gocompiled7108 ms61.9 ms62.7 ms600 µs1.62 GiB0.05×OK
Pipitbytecode VM72.35 ms1.21 s1.24 s13.3 ms534 MiB1.00×OK
CPython 3.14bytecode VM7712 µs1.31 s1.32 s7.01 msn/a1.08×OK
PyPy 7.3tracing JIT7513 µs258 ms286 ms11.8 msn/a0.21×OK
tengobytecode VM7395 µs4.19 s4.24 s26.9 ms1.66 GiB3.45×OK
scriggobytecode VM0n/an/an/an/an/an/aunsupported
mvmbytecode VM7712 µs4.21 s4.24 s21.7 ms1.68 GiB3.47×OK
yaegiAST walker7573 µs9.86 s9.93 s39.1 ms1.66 GiB8.12×OK
Workload & symmetry rules

Workload

For each of 10,000 randomly-generated infix expressions: tokenise with a byte-loop lexer, parse via shunting-yard, evaluate over an integer stack.

Symmetry rules

  • Bring-your-own tokeniser, parser, evaluator. No eval(), no AST library.
  • Operands are 64-bit integers; division is integer division.
Source code