An open programming language experiment

One calculation.
Many ways to
get there.

How do different implementations compute π? Explore the timings, the tradeoffs, and every recorded detail behind the numbers.

Latest published snapshot05 September 2026
Implementations75across multiple variants
Workload1 billion terms per execution
Environmentx86_64Virtualized runner
Run details ↗

Whole-run elapsed time

5h 18m 46s

Original Argo workflow: checkout, setup, all 75 targets, analysis and failed publication attempt. Excludes the later publication-only retry.

2026-09-05T13:57:02Z → 2026-09-05T19:15:48Z

Measurements and analysis succeeded; publication failed and was retried separately

Recorded workflow timestamps ↓
i

A benchmark is a set of conditions. These are timings for specific implementations, not a universal language ranking. Optimized math and SIMD are labeled; the current snapshot was measured on a shared virtual machine. Small differences may be noise.

Read the limitations ↗

01 / The measurements

Follow the numbers.

Choose an implementation to inspect its samples,
build commands, packages and environment.

75 implementationsMedian wall time · lower is faster · bars use log scale
ImplementationCompiler / runtimeMath behaviorMedian timeInspect
01RuRust (SIMD)rust-simd1.92.0Default mathSIMD141.31 ms
02FoFortran 90fortran14.3.0Relaxed math141.67 ms
03NiNimnim2.2.4Relaxed math142.43 ms
04ObObjective-Cobjc18.1.8Relaxed math142.95 ms
05C+C++ (clang++)cpp-clang21.1.2Relaxed math143.32 ms
06RuRust (nightly SIMD)rust-nightly1.100.0Default mathSIMD144.76 ms
07C C (clang)c-clang21.1.2Relaxed math146.07 ms
08ZiZig (SIMD)zig-simd0.16.0Relaxed mathSIMD148.54 ms
09C C (gcc)c15.2.0Relaxed math157.90 ms
10C+C++ (g++)cpp15.2.0Relaxed math158.78 ms
11JuJuliajulia1.12.1Relaxed math163.22 ms
12C#C# (SIMD)csharp-simd8.0.416Default mathSIMD203.58 ms
13F#F# (SIMD)fsharp-simd8.0.416Default mathSIMD213.10 ms
14SwSwiftswift5.8Default math290.64 ms
15C+C++ (AVX2)cpp-avx215.2.0Relaxed mathSIMD290.67 ms
16CoCommon Lisp (SBCL SIMD)sbcl-simd2.5.10Default mathSIMD303.71 ms
17D D (GDC)d11.5.0Relaxed math317.55 ms
18D D (LDC)d-ldc1.41.0Relaxed math585.51 ms
19SwSwift (SIMD)swift-simd5.8Default mathSIMD661.68 ms
20RuRustrust1.92.0Default math705.02 ms
21RuRust (fast-math)rust-fastmath1.92.0Relaxed math710.19 ms
22AdAda (gnat-gcc)ada13.4.0Default math1.124 s
23ScScalascala3.7.4Default math1.135 s
24OCOCamlocaml5.3.0Default math1.137 s
25PoPonypony0.60.4Default math1.143 s
26SwSwift (relaxed)swift-relaxed5.8Relaxed math1.146 s
27LuLuaJITluajit2.1.1741730670Default math1.146 s
28ZiZigzig0.16.0Relaxed math1.152 s
29WAWASM (C via Wasmtime)wasm29.0.1Default math1.157 s
30AsAssembly (NASM x64)nasm2.16.03Default math1.161 s
31HaHarehare0.26.0Default math1.162 s
32CrCrystalcrystal1.18.2Default math1.163 s
33VVv0.4.11Default math1.164 s
34JaJava (GraalVM)java-graalvm23.0.1Default math1.164 s
35PaPascal (FPC)pascal3.2.2Default math1.165 s
36OdOdinodin2026-01Default math1.166 s
37GoGogo1.25.5Default math1.166 s
38MoMojomojo1.0.0Default math1.167 s
39JaJava (Vec Ops)java-vecops23.0.2Default mathSIMD1.171 s
40DeDeno (TypeScript)deno2.6.6Default math1.174 s
41HaHaxehaxe4.3.4Default math1.175 s
42CoCommon Lisp (SBCL)sbcl2.5.10Default math1.178 s
43DaDart (AOT)dart-aot3.9.4Default math1.183 s
44C#C#csharp8.0.416Default math1.195 s
45F#F#fsharp8.0.416Default math1.207 s
46JaJavascript (bun)bun1.3.4Default math1.208 s
47JaJavascript (nodejs)nodejs25.2.1Default math1.212 s
48KoKotlinkotlin2.1.0Default math1.226 s
49PyPython (PyPy)pypy3.11.13Default math1.257 s
50PyPython (Numba)cpython-numba3.12.8Relaxed math1.682 s
51ChChez Schemechezscheme10.3.0Default math1.720 s
52RaRacketracket9.0Default math1.864 s
53HaHaskell (GHC)haskell9.10.3Default math2.334 s
54JaJavajava21.0.9Default math3.086 s
55KoKotlin (Native)kotlin-native2.2.21Default math3.448 s
56PyPython (mypyc)mypyc3.12.8Relaxed math3.646 s
57ClClojureclojure1.12.0Default math3.812 s
58DaDartdart3.9.4Default math4.095 s
59GrGroovygroovy4.0.26Default math4.404 s
60PHPHPphp8.4.15Default math8.665 s
61LuLualua5.4.4Default math9.163 s
62ElElixirelixir1.18.1Default math10.66 s
63ErErlangerlang27Default math11.12 s
64RRr4.5.2Default math11.35 s
65JaJanet (compiled)janet-compiled1.39.1Default math13.79 s
66PyPython (NumPy)cpython-numpy3.12.8Default math17.11 s
67OcOctave (Vectorised)octave-vectorised10.3.0Default mathSIMD17.32 s
68GlGleamgleam1.14.0Default math37.14 s
69RuRubyruby3.4.7Default math47.14 s
70JaJanetjanet1.40.1Default math51.24 s
71PyPython (CPython)python3.12.8Default math76.58 s
72RaRakuraku2025.06.1Default math82.74 s
73PePerlperl5.40.0Default math106.49 s
74MiMicroPythonmicropython1.24.1Default math109.50 s
75OcOctaveoctave10.3.0Default math1004.05 s

The chart, to keep

A picture of
the whole run.

All 75 implementations, package versions and measured spread. Median times match the table above. The logarithmic axis makes the full range readable.

Explicit SIMD and relaxed math are marked. This is a comparison of these implementations under recorded conditions.

Download the results image ↓

02 / Behind the experiment

Behind the numbers.
Inside the experiment.

Follow the code, explore the measurement, and meet the machinery behind the results.

Read the journal ↗
Inside the system12 SEP 2026

How code becomes
a benchmark.

Follow a source change through toolchains, caches, clocks and archives in an interactive walkthrough.

Explore the story ↗