The Computer Language
24.04 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 3.89 19,648 967    
  C clang 5.65 19,684 1179    
  Java 7.85 41,512 1437    
 
 
 
× source secs mem gz cpu secs cpu load
1.0 Chapel #3 3.89 19,648 967 3.90 100% 0% 0% 0%
1.0 Rust #2 3.92 19,660 1809 3.92 0% 100% 0% 1%
1.0 Rust #6 3.95 19,788 1796 3.95 100% 1% 0% 0%
1.1 Julia #8 4.16 272,512 1129 4.25 96% 0% 6% 0%
1.1 Classic Fortran #6 4.21 19,856 1530 4.21 0% 100% 0% 0%
1.2 Rust #8 4.51 19,788 1774 4.50 100% 0% 0% 1%
1.3 C gcc #6 4.96 19,520 1186 4.96 0% 0% 100% 0%
1.3 C gcc 5.18 19,520 1179 5.18 0% 100% 0% 0%
1.3 C gcc #2 5.18 19,520 1270 5.18 0% 0% 100% 0%
1.3 Rust #4 5.21 19,660 1810 5.21 0% 0% 100% 0%
1.3 C gcc #3 5.24 19,520 1214 5.24 100% 0% 0% 1%
1.4 C++ g++ #3 5.30 19,804 1402 5.30 0% 0% 100% 0%
1.4 Classic Fortran #2 5.37 19,856 1507 5.37 0% 0% 100% 0%
1.4 C++ g++ #9 5.43 19,676 1536 5.43 100% 0% 0% 0%
1.4 Classic Fortran 5.43 19,728 1400 5.43 0% 0% 0% 100%
1.4 Rust 5.51 19,660 1483 5.51 0% 0% 0% 100%
1.4 Rust #3 5.60 19,656 1546 5.60 0% 0% 100% 0%
1.5 Chapel #2 5.65 19,648 977 5.65 99% 0% 0% 0%
1.5 Julia #4 5.74 252,032 1168 5.83 1% 1% 0% 99%
1.5 Ada 2012 GNAT #3 5.82 19,712 1758 5.82 100% 1% 0% 0%
1.5 Ada 2012 GNAT 5.83 19,712 1624 5.83 0% 0% 1% 100%
1.5 Swift #6 5.97 19,680 1200 5.97 100% 0% 0% 1%
1.5 Classic Fortran #5 5.98 19,728 1669 5.98 0% 0% 0% 100%
1.5 C++ g++ #5 6.01 19,676 1544 6.00 0% 0% 100% 0%
1.6 Classic Fortran #4 6.18 19,728 1183 6.18 0% 0% 1% 100%
1.6 Free Pascal 6.28 19,680 1315 6.28 0% 100% 1% 0%
1.6 Free Pascal #2 6.28 19,680 1328 6.28 0% 0% 0% 100%
1.6 Classic Fortran #3 6.32 19,856 1311 6.32 0% 0% 0% 100%
1.6 Go #3 6.37 19,808 1207 6.38 100% 0% 0% 0%
1.7 C++ g++ 6.49 19,676 1666 6.49 99% 0% 0% 0%
1.7 Julia #3 6.53 254,592 1548 6.62 0% 0% 1% 99%
1.7 C++ g++ #8 6.57 19,676 1524 6.57 0% 0% 0% 100%
1.7 C# .NET #3 6.64 31,228 1311 6.63 1% 99% 0% 0%
1.7 Java  #5 6.78 41,384 1435 6.82 0% 0% 99% 1%
1.8 C gcc #7 6.81 19,520 1250 6.81 100% 0% 0% 1%
1.8 C# .NET #2 6.83 31,272 1350 6.81 0% 99% 0% 0%
1.8 C# .NET #8 6.83 31,272 1339 6.81 0% 0% 0% 99%
1.8 OCaml 6.83 19,688 1255 6.83 0% 99% 0% 0%
1.8 Java #4 6.87 41,188 1495 6.91 0% 0% 99% 0%
1.8 F# .NET #4 6.88 34,256 1296 6.87 99% 0% 0% 0%
1.8 C++ g++ #6 6.89 19,676 1674 6.89 1% 0% 100% 0%
1.8 F# .NET #3 6.92 32,088 1624 6.89 0% 0% 99% 0%
1.8 Go 7.00 19,680 1316 7.02 0% 100% 0% 0%
1.8 Dart #6 7.02 19,536 1318 7.02 0% 0% 99% 0%
1.8 Go #2 7.02 19,680 1222 7.03 100% 0% 0% 0%
1.8 Free Pascal #3 7.16 19,680 1424 7.16 100% 1% 0% 0%
1.9 F# .NET #2 7.39 34,188 1387 7.37 0% 0% 0% 99%
1.9 Java #2 7.42 41,308 1430 7.46 13% 1% 0% 86%
1.9 Java #3 7.47 41,256 1436 7.51 86% 0% 14% 0%
2.0 F# .NET 7.76 49,484 1272 7.82 1% 99% 0% 1%
2.0 C# .NET 7.79 31,348 1424 7.78 0% 0% 99% 0%
2.0 Lisp SBCL #2 7.81 19,816 1408 7.81 100% 0% 0% 0%
2.0 Java 7.85 41,512 1437 7.89 0% 99% 0% 0%
2.1 Node js #6 8.35 46,728 1274 8.36 0% 99% 0% 0%
2.4 Lisp SBCL 9.26 19,816 1373 9.26 0% 100% 0% 0%
2.4 Dart #2 9.43 19,536 1273 9.43 99% 0% 0% 0%
2.5 Swift #2 9.55 19,684 1198 9.55 100% 0% 0% 0%
2.8 Haskell GHC #2 11.05 19,668 1888 11.20 0% 100% 0% 0%
2.9 Dart #3 11.45 19,536 1413 11.45 100% 0% 0% 0%
6.1 Julia #2 23.73 301,100 1084 23.86 0% 0% 99% 0%
10 Racket 40.72 78,124 1503 40.71 0% 100% 0% 0%
17 PHP #3 66.45 19,396 1088 66.43 0% 0% 0% 100%
27 Erlang #3 104.36 42,236 1405 104.40 0% 27% 72% 0%
29 VW Smalltalk 111.27 55,552 1787 111.25 0% 82% 0% 18%
49 Ruby #3 188.71 21,248 1169 188.71 100% 0% 0% 0%
52 Swift #3 202.89 19,680 1210 202.89 100% 0% 0% 0%
55 Ruby #2 215.31 21,248 1143 215.31 0% 0% 100% 0%
59 Lua #4 227.77 19,672 1312 227.76 0% 0% 100% 0%
62 Lua #2 239.26 19,672 1200 239.25 0% 100% 0% 0%
69 Lua 267.17 19,672 1207 267.16 0% 100% 0% 0%
74 Swift #9 287.28 19,684 1532 287.27 100% 0% 0% 0%
93 Python 3 #2 6 min 19,656 1247 6 min 100% 0% 0% 0%
95 Python 3 6 min 19,656 1201 6 min 0% 0% 100% 0%
111 Perl #2 7 min 19,640 1431 7 min 0% 0% 100% 0%
680 Matz's Ruby #2 44 min 11,096 1137 44 min 0% 100% 0% 0%
691 Matz's Ruby #3 44 min 11,100 1163 44 min 0% 100% 0% 0%
 
 
  hand-written vector instructions | "unsafe"
 
× source secs mem gz cpu secs cpu load
0.5 C gcc #9 2.10 19,520 1639 2.10 0% 0% 0% 100%
0.6 C++ g++ #0 2.14 19,676 1933 2.14 1% 0% 100% 0%
0.6 Rust #9 2.20 19,660 1881 2.20 99% 1% 0% 0%
0.8 Rust #7 3.13 19,660 1759 3.13 0% 0% 0% 100%
0.8 C# .NET #9 3.16 29,972 2480 3.15 99% 0% 1% 0%
1.0 C gcc #8 3.70 19,520 1398 3.69 100% 0% 0% 1%
1.0 C# .NET #4 3.78 30,096 2137 3.77 99% 1% 0% 0%
1.0 C++ g++ #7 3.97 19,804 1815 3.97 100% 0% 0% 0%
1.1 C++ g++ #2 4.20 19,676 1884 4.19 0% 0% 100% 0%
1.1 C gcc #4 4.30 19,520 1496 4.30 0% 0% 100% 0%
1.2 C# .NET #7 4.80 30,216 1715 4.78 99% 0% 0% 0%
1.2 C# .NET #6 4.82 30,324 1754 4.81 0% 0% 99% 0%
1.3 F# .NET #6 4.97 34,020 1395 4.95 99% 0% 0% 1%
1.3 F# .NET #5 5.01 34,008 1363 5.00 0% 0% 99% 0%
1.3 Rust #5 5.06 19,788 2224 5.06 0% 99% 1% 0%
1.4 C gcc #5 5.41 19,648 1436 5.41 99% 0% 0% 0%
1.4 C++ g++ #4 5.44 19,804 1434 5.44 0% 0% 100% 0%
1.4 Swift #4 5.49 19,680 1361 5.49 0% 0% 100% 1%
1.4 Swift #5 5.51 19,812 1372 5.51 1% 99% 0% 0%
1.4 Swift #7 5.52 19,684 1333 5.52 100% 0% 0% 1%
1.5 Ada 2012 GNAT #2 5.74 19,840 2623 5.74 0% 0% 100% 0%
1.5 Swift #8 5.99 19,808 1688 5.99 100% 0% 1% 0%
2.3 Ada 2012 GNAT #5 8.99 19,712 2452 8.98 0% 100% 0% 0%
3.7 Racket #2 14.23 78,496 1695 14.23 100% 0% 0% 0%
3.8 Haskell GHC 14.80 19,796 1713 15.00 0% 0% 99% 0%