Smoke: integer addition
Sum 1..N in a tight loop, the smallest workload in the suite. It exists to surface interpreter dispatch overhead at the smallest possible payload.
Compile time · median (cold)
Full statistics
| Runner | N | Compile | Runtime | P95 | Stddev | RSS | vs pipit | Status |
|---|---|---|---|---|---|---|---|---|
| Native Gocompiled | 7 | 108 ms | 25.1 µs | 25.7 µs | 270 ns | 71 MiB | 256× | OK |
| Pipitbytecode VM | 7 | 422 µs | 465 µs | 541 µs | 37.0 µs | 54 MiB | 1.00× | OK |
| CPython 3.14bytecode VM | 7 | 226 µs | 1.54 ms | 1.65 ms | 59.9 µs | n/a | 0.54× | OK |
| PyPy 7.3tracing JIT | 7 | 172 µs | 509 µs | 525 µs | 6.85 µs | n/a | 0.41× | OK |
| tengobytecode VM | 7 | 110 µs | 3.03 ms | 3.68 ms | 228 µs | 59 MiB | 0.26× | OK |
| scriggobytecode VM | 7 | 85.8 µs | 2.61 ms | 2.66 ms | 28.3 µs | 59 MiB | 0.20× | OK |
| mvmbytecode VM | 7 | 166 µs | 1.01 ms | 1.76 ms | 291 µs | 59 MiB | 0.39× | OK |
| yaegiAST walker | 7 | 167 µs | 1.60 ms | 2.21 ms | 349 µs | 59 MiB | 0.40× | OK |
Workload & symmetry rules
Workload
Sum 1..1,000,000 in a single tight loop, print the result mod 2^32.
Why this benchmark exists
It's the simplest possible interpreter workload. If dispatch dominates anything, it dominates this. End-to-end mode is therefore mostly startup time; inner-loop mode is mostly add+jump throughput.
Symmetry rules
- One loop, two locals, no function calls in the hot path.
- No
sum()/numpy/strconvshortcuts.
Source code
pipit / Go
pipit_source.gonative Go
native_main.goCPython / PyPy
cpython.pytengo
script.tengo