Mandelbrot Benchmark

Mandelbrot Benchmark Banner

Setup

A 2000 x 2000 Mandelbrot set with a maximum of 1000 iterations (the correct checksum is 689833081), written the same way in every language: integer math, floating point, loops, branches, function calls and memory writes. A run only counts if it prints the reference's checksum.

Results (2026-10-24, provisional)

These are the current results from the benchmark repository, and they are provisional: other work was running on the machine while they were measured, so every figure is likely to move a little, and the slowest programs most. Each time is the median of five rounds (three for the slow ones), measured from starting the process to its exit, so a runtime's start-up is included. Compare rows within this table only; the repository keeps the full method, the toolchains, the load on the machine and the earlier records.

Rank (by Time) Platform Size Run Time (ms, median) Range (ms) Peak Memory
1 Go 2.4 MB 1,335.84 1,294.75 - 5,219.69 37.48 MB
2 C++ 15 KB 1,368.68 1,347.09 - 1,490.50 19.08 MB
3 C# AoT 916 KB 1,406.34 1,382.91 - 1,619.13 22.30 MB
4 JavaScript (Node) 1 KB + 104 MB 1,441.62 1,425.10 - 1,529.44 53.57 MB
5 JavaScript (Web/Chrome) 3 KB 1,466.70 (render only) 1,375.70 - 1,525.80 N/A
6 Julia 1 KB + 1.1 GB 1,546.59 1,523.35 - 1,831.54 163.32 MB
7 C# (.NET 10) 12.3 MB 1,556.33 1,518.21 - 1,630.63 40.13 MB
8 Java (Temurin 17.0.11) 2 KB + 303 MB 2,225.39 1,703.51 - 2,905.58 56.14 MB
9 Pure 2 (Divooka Pure) 1 KB + 1.75 GB 2,526.64 2,432.84 - 2,683.12 202.84 MB
10 Haskell (GHC 9.10.3) 11.4 MB 2,831.05 2,818.44 - 2,921.94 43.38 MB
11 Divooka (AviatorBeta program) 77.2 MB 3,793.71 3,754.41 - 4,236.41 53.61 MB
12 Divooka (Stewer, compiled) 7 KB + 1.75 GB 6,410.04 6,120.30 - 6,912.88 343.46 MB
13 Elixir (1.14.4, OTP 25) 2 KB + 387 MB 12,973.86 10,847.94 - 19,745.77 56.94 MB
14 Ruby (4.0.9) 1 KB + 304 MB 96,404.04 82,093.14 - 111,871.05 47.19 MB
15 Python (3.13.5) 1 KB + 151 MB 96,981.26 84,764.84 - 97,928.50 61.74 MB
16 Perl (5.42.3) 1 KB + 1.1 GB 206,107.18 201,216.36 - 224,165.19 200.11 MB
17 Prolog (SWI 9.0.4) 2 KB + 47 MB 664,090.70 (11 min) 576,466.76 - 672,132.51 13.66 MB
18 GNU Octave (7.3.0) 1 KB + 2.2 GB (Est.) 5,074,024 (85 min) from 7,624 at 100 x 100 and 45,319 at 200 x 200 35.17 MB
19 Divooka (Stewer, interpreted) 7 KB + 1.75 GB (Est.) 13,517,210 (3.8 hr) from 49,078 at 100 x 100 and 149,285 at 200 x 200 205.57 MB

Notes:

  • In short, a Divooka document built into a program of its own (AviatorBeta) runs in about 3.8 seconds, compiled by Stewer on every run in about 6.4 seconds, and in the node-by-node interpreter the editor's Interpreted run uses an estimated 3.8 hours; the estimate is read off two smaller runs, because the full size is too slow to wait for.
  • "Divooka (Stewer, compiled)" compiles the document on every run, which is most of its distance from the AviatorBeta program. Divooka's documents run in a Divooka Compute folder (1.75 GB, everything included), and the AviatorBeta program is a document built into a self-contained program, as Divooka Compute's Publish builds one.
  • Pure 2 runs the C# version as a script, which Roslyn compiles when the run starts, inside Divooka Pure's process.
  • An earlier version of this page showed Divooka at an estimated 95.8 hours. That was the estimate for the older editor interpreter, taken in an earlier record with a different method, and it is superseded by the figures above.
  • The browser times its own render after a warm-up, so JavaScript (Web) is not comparable with the other rows.

Earlier results, kept for interest

The repository's earlier records, taken with a different method, also include some AI models, as results of general interest; they are not in the table above. In those records ChatGPT (5.3 Instant) took 26,320 ms (26.32 seconds) and Kimi (2.6 Instant) 340,330 ms, while Grok (Fast) and Gemini (Fast) failed. The repository notes that ChatGPT does not produce reliable outputs.

References

  • Benchmark repository: the full method, the toolchains, the ray tracer benchmark, the SteelPython results and every earlier record.