nanopython benchmarks¶
For contributors evaluating optimization arcs, and for embedded/systems developers calibrating perf expectations. Snapshot from 2026-06-07. The current longitudinal data lives in metrics/history.ndjson (run make metrics-report for the trend). This page captures one point-in-time comparison for context.
- Date: 2026-06-07 14:13:08 CEST
- Platform: Darwin arm64 (macOS-14.8.4-arm64-arm-64bit-Mach-O)
- Commit:
6f9ca14 - Methodology: K=2 warmup, N=5 timed iterations per (interpreter, benchmark). Reported value is the median wall-clock; minimum shown in tooltip-style parens. Full methodology in ADR 004.
Interpreters¶
| Name | Binary | Size | Version |
|---|---|---|---|
| nanopython | nanopython |
954 KB | nanopython 0.4.0 |
| MicroPython | micropython |
652 KB | MicroPython v1.28.0-preview.80.gb14d129a16 on 2026-05-17; darwin (Clang 15.0.0) version |
| CPython | python3 |
51 KB | Python 3.14.5 |
nanopython is built with make build-release (-Doptimize=ReleaseFast -Dconfig=nano). MicroPython is the upstream unix-standard build. CPython is the system python3.
Results¶
| benchmark | nanopython median (s) | MicroPython median (s) | CPython median (s) | nano / MicroPython | nano / CPython | output match |
|---|---|---|---|---|---|---|
| dictops | 0.185 (min 0.184) | 0.117 (min 0.115) | 0.125 (min 0.123) | 1.57× | 1.48× | yes |
| fannkuch | 0.554 (min 0.546) | 0.558 (min 0.545) | 0.338 (min 0.330) | 0.99× | 1.64× | yes |
| fib | 0.545 (min 0.530) | 0.430 (min 0.427) | 0.272 (min 0.265) | 1.27× | 2.00× | yes |
| listops | 0.150 (min 0.146) | 0.109 (min 0.108) | 0.113 (min 0.112) | 1.37× | 1.33× | yes |
| sieve | 0.326 (min 0.315) | 0.160 (min 0.155) | 0.151 (min 0.148) | 2.04× | 2.16× | yes |
| strops | 0.225 (min 0.183) | 0.285 (min 0.272) | 0.055 (min 0.052) | 0.79× | 4.10× | yes |
| geomean | n/a | n/a | n/a | 1.28× | 1.96× | n/a |
Ratio reading: nano / X means nanopython's median divided by X's median. A value of 1.50× means nanopython took 1.5× as long as X (i.e. X is faster). Lower is better for nanopython.
Output equivalence¶
All benchmarks produce byte-identical stdout across all available interpreters.