Mandelbrot 基準測試

設定
一個 2000 x 2000 的 Mandelbrot 集,最大迭代次數為 1000(正確的校驗和為 689833081),在每種語言中都以相同的方式編寫:整數運算、浮點運算、迴圈、分支、函式呼叫和記憶體寫入。只有列印出與參考實現相同校驗和的執行才計入結果。
結果(2026-10-24,暫定)
以下是來自基準測試倉庫的目前結果,它們是暫定的:測量時機器上還執行著其他工作,因此每個數字都可能略有變動,最慢的程式變動最大。每個時間都是五輪(較慢的程式為三輪)的中位數,從啟動程序測量到其退出,因此包含了執行時的啟動時間。只能在本表內比較各行;倉庫中儲存了完整的方法、工具鏈、機器負載以及更早的記錄。
| 排名(按時間) | 平臺 | 大小 | 執行時間(ms,中位數) | 範圍(ms) | 峰值記憶體 |
|---|---|---|---|---|---|
| 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(僅渲染) | 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 程式) | 77.2 MB | 3,793.71 | 3,754.41 - 4,236.41 | 53.61 MB |
| 12 | Divooka(Stewer,編譯) | 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 分鐘) | 576,466.76 - 672,132.51 | 13.66 MB |
| 18 | GNU Octave (7.3.0) | 1 KB + 2.2 GB | (估計)5,074,024(85 分鐘) | 根據 100 x 100 時的 7,624 和 200 x 200 時的 45,319 推算 | 35.17 MB |
| 19 | Divooka(Stewer,解釋) | 7 KB + 1.75 GB | (估計)13,517,210(3.8 小時) | 根據 100 x 100 時的 49,078 和 200 x 200 時的 149,285 推算 | 205.57 MB |
說明:
- 簡而言之,構建為獨立程式(AviatorBeta)的 Divooka 文件執行約需 3.8 秒;由 Stewer 在每次執行時編譯,約需 6.4 秒;而在逐節點直譯器中(即編輯器的 Interpreted 執行所用的方式),估計需要 3.8 小時。這一估計值是根據兩次較小規模的執行推算的,因為完整規模太慢,無法等待其完成。
- “Divooka(Stewer,編譯)”在每次執行時都會編譯文件,這是它與 AviatorBeta 程式之間差距的主要來源。Divooka 的文件在 Divooka Compute 資料夾(1.75 GB,包含一切)中執行,而 AviatorBeta 程式是將文件構建成的自包含程式,與 Divooka Compute 的 Publish 所構建的程式相同。
- Pure 2 將 C# 版本作為指令碼執行,在執行開始時由 Roslyn 在 Divooka Pure 的程序內編譯。
- 本頁面的早期版本顯示 Divooka 估計需要 95.8 小時。那是針對舊版編輯器直譯器的估計,取自較早的一次記錄,採用的方法也不同,現已被上述數字取代。
- 瀏覽器在預熱之後為自身的渲染計時,因此 JavaScript (Web) 無法與其他行進行比較。
較早的結果,僅供參考
倉庫中較早的記錄採用了不同的方法,其中還包括一些 AI 模型,作為大眾可能感興趣的結果;它們不在上表中。在這些記錄中,ChatGPT (5.3 Instant) 用時 26,320 ms(26.32 秒),Kimi (2.6 Instant) 用時 340,330 ms,而 Grok (Fast) 和 Gemini (Fast) 失敗。倉庫中註明 ChatGPT 的輸出並不可靠。
參考資料
- 基準測試倉庫:完整的方法、工具鏈、光線追蹤器基準測試、SteelPython 結果以及所有較早的記錄。