The Computer Language
23.03 Benchmarks Game

n-body

First a few simple programs.

Then optimisations, multicore parallelism, [pdf] vector parallelism.

Last hand-written vector instructions and "unsafe" programs.

  source secs mem gz    
  Chapel #3 5.60 10,940 960    
  C clang 5.98 11,392 1173    
  Java 7.76 40,724 1430    
 
 
 
× source secs mem gz cpu secs cpu load
1.0 Rust #6 3.92 11,068 1790 3.92 0% 0% 0% 100%
1.1 Classic Fortran #6 4.20 10,960 1524 4.20 0% 0% 100% 0%
1.1 Julia #8 4.11 226,264 1111 4.38 2% 2% 2% 100%
1.2 C++ g++ #9 4.88 10,960 1530 4.88 0% 0% 0% 100%
1.4 Classic Fortran #2 5.37 10,960 1500 5.36 100% 0% 0% 0%
1.4 Classic Fortran 5.48 10,960 1393 5.48 0% 0% 0% 99%
1.4 Chapel #3 5.60 10,940 960 5.61 99% 0% 0% 0%
1.4 Rust #3 5.63 11,068 1540 5.63 0% 1% 0% 100%
1.4 Rust 5.63 11,068 1480 5.63 100% 0% 0% 0%
1.5 C++ g++ #6 5.70 10,960 1668 5.70 0% 100% 0% 0%
1.5 C++ g++ #3 5.76 10,960 1396 5.76 0% 0% 0% 100%
1.5 Ada 2012 GNAT 5.92 10,960 1618 5.91 0% 100% 0% 0%
1.5 Julia #4 5.65 199,672 1155 5.92 1% 1% 99% 1%
1.5 Swift #6 5.93 11,340 1194 5.93 0% 0% 0% 100%
1.5 Ada 2012 GNAT #3 5.97 10,960 1750 5.97 100% 0% 0% 0%
1.5 C++ g++ 5.97 10,960 1659 5.97 0% 100% 0% 0%
1.5 Rust #2 5.98 11,068 1805 5.98 0% 0% 0% 100%
1.5 Rust #8 6.01 11,068 1767 6.01 0% 0% 0% 100%
1.5 Classic Fortran #5 6.04 10,960 1664 6.03 0% 100% 0% 0%
1.6 Chapel #2 6.10 10,940 971 6.11 100% 0% 0% 0%
1.6 Classic Fortran #4 6.15 10,960 1179 6.15 0% 100% 0% 0%
1.6 Rust #4 6.20 11,068 1803 6.20 0% 0% 0% 99%
1.6 Free Pascal 6.27 11,340 1308 6.27 100% 0% 0% 0%
1.6 Free Pascal #2 6.28 11,340 1322 6.28 0% 0% 100% 0%
1.6 Classic Fortran #3 6.32 10,960 1305 6.32 0% 0% 100% 0%
1.6 Go #3 6.36 11,244 1200 6.37 100% 0% 0% 0%
1.6 Haskell GHC #2 6.38 11,064 1883 6.46 99% 0% 0% 0%
1.7 C++ g++ #8 6.53 10,960 1517 6.53 0% 100% 0% 0%
1.7 Go 6.55 11,244 1310 6.56 0% 100% 0% 0%
1.7 C gcc #6 6.61 11,392 1180 6.60 0% 0% 0% 100%
1.7 C gcc #2 6.70 11,392 1263 6.70 0% 0% 100% 0%
1.7 C gcc 6.75 11,392 1173 6.75 0% 0% 100% 0%
1.7 C gcc #7 6.80 11,392 1244 6.80 0% 0% 0% 100%
1.7 OCaml 6.81 11,148 1251 6.81 0% 0% 0% 100%
1.7 Java  #5 6.77 40,632 1429 6.82 99% 0% 0% 1%
1.8 C# .NET #3 6.89 30,564 1305 6.87 99% 0% 0% 0%
1.8 C++ g++ #5 6.89 11,016 1538 6.88 0% 100% 0% 0%
1.8 Java #4 6.86 40,516 1489 6.89 15% 85% 0% 0%
1.8 F# .NET #3 6.91 106,624 1617 6.90 99% 0% 0% 0%
1.8 Go #2 6.94 11,244 1215 6.95 0% 0% 0% 100%
1.8 Dart #6 6.96 10,968 1311 6.96 0% 0% 99% 0%
1.8 Julia #3 6.81 202,744 1541 7.08 1% 1% 100% 1%
1.8 C# .NET #8 7.13 30,596 1332 7.12 0% 0% 99% 0%
1.8 C# .NET #2 7.14 30,532 1343 7.12 99% 0% 0% 0%
1.8 Free Pascal #3 7.16 11,340 1418 7.16 0% 0% 100% 0%
1.8 C gcc #3 7.25 11,392 1208 7.25 0% 100% 0% 0%
1.9 F# .NET #2 7.28 108,408 1381 7.26 99% 0% 0% 0%
1.9 Java #2 7.32 40,508 1424 7.37 0% 13% 86% 1%
1.9 F# .NET #4 7.40 108,620 1290 7.38 99% 0% 0% 0%
1.9 Java #3 7.38 40,492 1430 7.43 1% 99% 0% 0%
2.0 Lisp SBCL #2 7.79 15,980 1403 7.79 0% 0% 0% 100%
2.0 Java 7.76 40,724 1430 7.80 1% 0% 0% 99%
2.1 Swift #3 8.06 11,340 1204 8.06 0% 0% 0% 100%
2.3 Swift #2 9.12 11,340 1192 9.12 100% 0% 0% 0%
2.4 Node js #6 8.41 45,908 1268 9.39 6% 2% 100% 3%
2.4 Dart #2 9.44 10,968 1266 9.44 0% 0% 99% 0%
2.9 Dart #3 11.51 10,968 1407 11.51 0% 99% 0% 0%
3.3 Lisp SBCL 12.79 15,864 1368 12.79 0% 0% 0% 100%
6.1 Julia #2 23.45 271,236 1078 23.72 100% 0% 0% 0%
10 Racket 40.98 69,484 1496 40.98 0% 0% 100% 0%
17 PHP #3 65.75 13,100 1082 65.74 0% 0% 100% 0%
27 Erlang #3 105.24 36,704 1399 105.29 0% 0% 99% 0%
29 VW Smalltalk 113.02 55,444 1782 113.00 0% 0% 100% 0%
49 Ruby #3 190.96 25,644 1163 190.95 1% 1% 100% 1%
56 Ruby #2 218.13 25,684 1137 218.04 0% 100% 0% 0%
59 Lua #2 229.78 10,808 1193 229.75 1% 7% 25% 68%
59 Lua #4 232.46 10,808 1305 232.43 0% 0% 0% 100%
65 Lua 254.76 10,808 1201 254.73 0% 1% 100% 0%
73 Swift #9 285.30 14,892 1526 285.29 1% 0% 100% 0%
98 Python 3 6 min 11,096 1196 6 min 100% 0% 0% 0%
103 Python 3 #2 6 min 11,096 1242 6 min 0% 100% 0% 0%
103 Perl #2 6 min 10,904 1429 6 min 0% 0% 100% 0%
674 Matz's Ruby #2 44 min 11,096 1137 44 min 0% 100% 0% 0%
685 Matz's Ruby #3 44 min 11,100 1163 44 min 0% 100% 0% 0%
F# .NET Bad Output
 
 
  hand-written vector instructions | "unsafe"
 
× source secs mem gz cpu secs cpu load
0.5 C gcc #9 2.08 11,392 1633 2.08 0% 0% 0% 100%
0.5 C++ g++ #0 2.14 10,960 1927 2.14 0% 0% 100% 0%
0.7 Rust #9 2.81 11,068 1874 2.81 100% 0% 0% 0%
0.8 C# .NET #9 3.14 30,200 2467 3.13 99% 0% 0% 0%
0.8 Rust #7 3.27 11,068 1753 3.27 100% 0% 0% 0%
1.0 C# .NET #4 3.78 30,120 2125 3.76 0% 99% 0% 0%
1.0 C gcc #8 4.01 11,392 1391 4.01 0% 0% 100% 0%
1.1 C gcc #4 4.41 11,392 1490 4.41 0% 0% 100% 0%
1.1 C++ g++ #2 4.44 10,960 1879 4.44 0% 0% 0% 100%
1.1 C++ g++ #7 4.44 10,960 1808 4.44 0% 0% 99% 0%
1.2 C# .NET #7 4.79 30,184 1704 4.78 99% 0% 0% 0%
1.2 C# .NET #6 4.81 30,192 1742 4.80 99% 0% 0% 0%
1.3 F# .NET #6 5.02 108,192 1383 5.00 0% 0% 99% 0%
1.4 C gcc #5 5.42 11,392 1429 5.42 99% 0% 0% 0%
1.4 Swift #5 5.44 14,780 1365 5.43 0% 100% 0% 0%
1.4 C++ g++ #4 5.44 10,960 1428 5.44 100% 0% 0% 0%
1.4 Swift #7 5.44 14,792 1326 5.44 0% 100% 0% 0%
1.4 Swift #4 5.45 14,780 1355 5.45 100% 0% 0% 0%
1.5 Ada 2012 GNAT #2 5.72 10,964 2617 5.72 0% 100% 0% 0%
1.5 Swift #8 5.92 14,820 1681 5.92 0% 0% 100% 0%
1.6 Rust #5 6.12 11,068 2220 6.11 0% 0% 100% 0%
1.8 Haskell GHC 7.15 11,064 1706 7.24 99% 0% 0% 0%
1.9 F# .NET #5 7.47 108,388 1351 7.45 89% 0% 10% 0%
2.3 Ada 2012 GNAT #5 8.91 10,960 2447 8.91 0% 100% 0% 0%
3.6 Racket #2 14.11 69,380 1689 14.11 0% 7% 92% 0%