| Order | Language | Implementation | Code | Relative Time | |
|---|---|---|---|---|---|
| 1 | C | Clang 14.0.6 | mandel.c | 2.29 | |
| 2 | C | Clang 14.0.6 with -O3 |
mandel.c | 1.04 | |
| 3 | Python | Codon 0.18.2 | mandel_hinted.py | 1.65 | |
| 4 | Python | CPython 3.13.3 | mandel_untyped.py | 38.03 | |
| 5 | Python | CPython 3.13.3 with type hints | mandel_hinted.py | 38.00 | |
| 6 | Python | CPython 3.13.3 with -O |
mandel_hinted.py | 37.86 | |
| 7 | Python | CPython 3.8.20 | mandel_untyped.py | 69.26 | |
| 8 | Cython | Cython 3.1.1 | mandel_hinted.py | 4.87 | |
| 9 | Cython | Cython 3.1.1 | mandel_typed.pyx | 1.01 | |
| 10 | Cython | Cython 3.1.1 | mandel_untyped.py | 58.81 | |
| 11 | Dart | Dart 3.8.0 | mandel.dart | 1.34 | |
| 12 | C# | .NET core 9.0.300 with dotnet build |
Mandel.cs | 2.19 | |
| 13 | C# | .NET core 9.0.300 with dotnet publish |
Mandel.cs | 1.10 | |
| 14 | C | GCC 12.2.0 | mandel.c | 2.11 | |
| 15 | C | GCC 12.2.0 with -march=native |
mandel.c | 1.07 | |
| 16 | C | GCC 12.2.0 with -O3 |
mandel.c | 1.00 | |
| 17 | Go | gccgo 12.2.0 | mandel.go | 2.19 | |
| 18 | Go | gccgo 12.2.0 with -O3 |
mandel.go | 1.06 | |
| 19 | Haskell | GHC 9.0.2 | mandel.hs | 30.62 | |
| 20 | Haskell | GHC 9.0.2 with -O3 |
mandel.hs | 2.05 | |
| 21 | Go | golang-go 1.19.8 | mandel.go | 1.06 | |
| 22 | C | GraalVM (+ Clang) 23.0.1 | mandel.c | 1.31 | |
| 23 | Java | GraalVM 23.0.1 | Mandel.java | 1.52 | |
| 24 | JavaScript | GraalVM 23.0.1 | mandel.js | 1.25 | |
| 25 | Python | GraalVM 23.0.1 | mandel_hinted.py | 2.31 | |
| 26 | Ruby | GraalVM 23.0.1 | mandel.rb | 1.57 | |
| 27 | PHP | HHVM 4.170.1 | mandel.hack | 1.28 | |
| 28 | Hack | HHVM 4.170.1 | mandel-typed.hack | 1.32 | |
| 29 | Haskell | Hugs September 2006 | mandel.hs | 1459.18 | * |
| 30 | Ruby | JRuby 10.0.0.1 | mandel.rb | 16.01 | |
| 31 | Python2 | Jython 2.7.3 | mandel_untyped.py | 33.11 | |
| 32 | Kotlin | Kotlin 2.1.21 on OpenJDK | mandel.kt | 1.31 | |
| 33 | Kotlin | Kotlin 2.1.21 with -jvm-target | mandel.kt | 1.31 | |
| 34 | Nim | Nim 1.6.10 | mandel.nim | 2.18 | |
| 35 | Nim | Nim 1.6.10 with --opt |
mandel.nim | 0.98 | |
| 36 | Python | Nuitka 2.7.3 | mandel_untyped.py | 62.42 | |
| 37 | Python | Numba 0.58.1 on Python 3.8 | mandel_untyped.py | 69.22 | |
| 38 | OCaml | OCaml 4.13.1 | mandel.ml | 18.24 | |
| 39 | OCaml | OCaml 4.13.1 with ocamlopt |
mandel.ml | 1.74 | |
| 40 | Java | OpenJDK 17.0.15 with -client |
Mandel.java | 1.23 | |
| 41 | Java | OpenJDK 17.0.15 with -server |
Mandel.java | 1.23 | |
| 42 | C | PCC 1.2.0.DEVEL | mandel.c | 2.13 | |
| 43 | C | PCC 1.2.0.DEVEL with -O2 |
mandel.c | 2.20 | |
| 44 | PHP | PHP 8.4.7 | mandel.php | 9.63 | |
| 45 | C | PicoC v2.2 compiled with -O3 |
mandel.c | 627.40 | * |
| 46 | Python | PyPy 7.3.11 | mandel_untyped.py | 1.17 | |
| 47 | Python | PyPy 7.3.11 | mandel_hinted.py | 1.17 | |
| 48 | Python | Pythran 0.18.0 | mandel_pyth.py | 1.65 | |
| 49 | R | R Patched | mandel.R | 28.12 | |
| 50 | JavaScript | Rhino Snapshot | mandel.js | 8.46 | |
| 51 | RPython | PyPy rpython translator 0.2.1 | targetmandel.py | 1.05 | |
| 52 | Ruby | Ruby 3.4.4 | mandel.rb | 47.10 | |
| 53 | Rust | Rust 1.63.0 | mandel.rs | 5.13 | |
| 54 | Rust | Rust 1.63.0 with opt-level=3 |
mandel.rs | 1.04 | |
| 55 | OCaml | OCaml 2.11.12 on OpenJDK | Mandel.scala | 1.37 | |
| 56 | JavaScript | SpiderMonkey 102.15.1 | mandel.js | 1.22 | |
| 57 | Swift | Swift 6.1 | mandel.swift | 1.61 | |
| 58 | C | TCC 0.9.27 | mandel.c | 2.12 | |
| 59 | JavaScript | V8/NodeJS 10.2.154.26-node.28 | mandel.js | 1.07 |
Times are measured by calling getrusage before and after running the subprocess, and summing the difference in the ru_utime and ru_stime. Only the test code itself is timed, not any compilation process. The tests were done on a processor that reported itself as “13th Gen Intel(R) Core(TM) i7-13700K”.
Each test generated a 400×400 Mandelbrot set, with at most 40000 iterations on each “pixel” (except the slowest tools, where the time is extrapolated from smaller runs. The test was repeated 3 times, and the times averaged. Actual times: 1 “time unit” = 2.93 s.