k-nucleotide First a few simple programs. Then optimisations, multicore parallelism, [pdf] vector parallelism. Last hand-written vector instructions and "unsafe" programs. source secs mem gz Lua #2 97.75 596,472 620 Julia 132.23 1,967,872 703 Matz's Ruby #2 8 min 168,140 420 × source secs mem gz cpu secs cpu load 1.0 C++ g++ #2 1.97 156,504 1634 5.87 66% 68% 73% 92% 1.5 Rust #7 2.86 134,084 1585 9.12 89% 67% 66% 99% 1.5 Rust #6 2.90 159,464 1697 10.51 98% 90% 89% 87% 1.5 C# .NET 3.02 184,620 2046 10.45 76% 86% 92% 92% 1.9 Rust #8 3.68 137,580 1549 10.41 45% 93% 59% 86% 1.9 C gcc 3.80 130,432 1512 12.64 77% 99% 72% 87% 2.0 Rust #5 3.91 137,764 1745 11.86 56% 91% 93% 63% 2.1 C++ g++ #3 4.19 165,592 1280 13.77 80% 94% 79% 78% 2.4 F# .NET #2 4.71 198,872 1932 16.34 81% 80% 91% 95% 2.5 F# .NET #5 4.92 198,784 1964 16.53 80% 88% 77% 95% 2.5 Chapel #4 4.96 192,256 1071 17.07 99% 81% 82% 82% 2.5 C# .NET #6 4.98 188,080 1615 12.69 64% 98% 41% 53% 2.5 Java 5.01 368,104 1821 16.33 92% 79% 78% 77% 2.9 Julia #8 5.74 441,148 965 13.70 68% 72% 38% 60% 3.0 Chapel #3 5.86 192,256 1040 20.64 99% 84% 84% 84% 3.1 Rust #2 6.10 139,388 1350 16.32 75% 76% 47% 69% 3.4 Rust #4 6.70 137,288 1755 18.12 45% 99% 93% 33% 3.4 Ada 2012 GNAT #2 6.75 259,564 4911 13.58 86% 23% 15% 78% 3.4 Rust #9 6.77 135,684 1850 18.07 30% 44% 96% 98% 3.5 C++ g++ 6.90 757,080 1452 14.68 92% 10% 99% 11% 3.6 Java #6 7.18 365,592 1614 25.01 83% 91% 85% 88% 3.7 Java #3 7.30 365,348 1642 25.39 95% 84% 83% 86% 3.8 Go #7 7.52 162,944 1613 28.68 95% 97% 95% 95% 4.2 Go #6 8.17 145,152 1596 29.90 87% 97% 97% 85% 4.3 Go #3 8.38 145,152 1729 30.32 93% 87% 97% 84% 4.4 Julia #7 8.71 430,084 1379 23.62 53% 73% 81% 65% 4.6 Go #4 9.07 139,904 1552 30.33 97% 82% 82% 72% 5.3 F# .NET #4 10.47 1,321,944 1522 26.43 48% 66% 80% 62% 5.6 Lisp SBCL #6 10.97 541,312 2485 40.13 98% 88% 90% 90% 5.9 C# .NET #4 11.52 775,588 1725 41.26 87% 90% 89% 92% 6.1 F# .NET #3 12.07 1,322,292 1124 26.04 30% 79% 84% 26% 6.5 Lisp SBCL 12.76 550,784 2431 41.85 98% 76% 77% 76% 7.8 Node js #3 15.38 422,240 1817 41.85 74% 95% 60% 43% 8.2 Java #5 16.05 219,872 2225 38.17 33% 25% 93% 86% 8.5 Lisp SBCL #4 16.70 156,288 2292 16.70 0% 100% 0% 0% 8.5 Lisp SBCL #5 16.83 156,416 2323 16.83 0% 100% 0% 0% 10 Dart #3 19.89 221,660 1526 59.29 79% 74% 81% 65% 11 PHP #4 20.89 260,560 1084 69.85 72% 77% 96% 89% 11 Rust 21.62 157,080 1086 64.67 50% 96% 60% 92% 12 Haskell GHC 22.83 659,584 1067 77.84 82% 87% 83% 89% 12 F# .NET 24.10 1,108,380 713 83.78 82% 83% 96% 90% 13 OCaml #2 26.57 314,252 1247 60.40 33% 79% 80% 34% 17 Java #4 34.43 195,584 1887 34.79 8% 92% 0% 0% 19 Node js #2 37.49 479,968 941 112.46 64% 97% 73% 64% 19 Perl 38.23 1,247,428 659 131.70 83% 91% 86% 83% 20 Node js 39.64 335,272 1011 115.24 61% 71% 96% 60% 21 C# .NET #7 40.57 761,912 1449 41.01 55% 43% 1% 1% 21 Perl #4 41.87 1,070,080 483 136.26 94% 87% 70% 74% 25 Python 3 #3 48.64 262,016 1970 184.81 96% 94% 94% 94% 26 Lisp SBCL #3 51.99 558,208 1297 51.99 0% 0% 100% 0% 26 Perl #3 52.15 1,147,904 520 171.73 89% 69% 98% 71% 27 Lisp SBCL #2 53.23 558,208 1291 53.23 100% 0% 0% 0% 32 Racket #4 63.67 926,924 893 63.66 81% 0% 0% 19% 39 Python 3 #9 77.06 380,416 614 263.65 79% 71% 95% 96% 43 Ruby 84.88 172,436 583 5 min 85% 92% 80% 96% 45 Python 3 #8 87.79 506,880 663 262.44 60% 84% 96% 58% 50 Lua #2 97.75 596,472 620 97.73 0% 0% 0% 100% 62 Perl #2 121.96 659,584 365 120.07 98% 0% 0% 0% 67 Julia 132.23 1,967,872 703 131.10 0% 0% 98% 0% 97 Matz's Ruby 191.91 147,340 576 10 min 97% 98% 72% 68% 102 Racket 200.38 2,438,152 554 198.38 0% 99% 0% 0% 130 Ruby #2 255.78 181,700 426 255.60 0% 0% 99% 0% 130 Ruby #7 256.92 393,216 792 255.31 28% 25% 32% 13% 139 Ruby #3 272.84 203,672 546 273.06 18% 39% 10% 32% 140 Python 3 275.64 500,224 499 274.74 0% 0% 99% 0% 217 VW Smalltalk #5 7 min 385,292 1323 7 min 0% 29% 0% 70% 263 Matz's Ruby #2 8 min 168,140 420 8 min 0% 0% 0% 99% 281 Dart 9 min 464,520 628 9 min 0% 100% 0% 0% 292 VW Smalltalk 9 min 386,160 1116 9 min 0% 0% 100% 0% 385 Matz's Ruby #3 12 min 168,844 540 12 min 60% 4% 39% 1% Erlang 1h 38 min 4,485,776 944 1h 43 min 22% 16% 39% 27% Erlang #3 1h 38 min 556,024 945 1h 42 min 29% 15% 37% 22% F# .NET #6 Make Error Classic Fortran Make Error Matz's Ruby #7 Failed Swift Make Error hand-written vector instructions | "unsafe" × source secs mem gz cpu secs cpu load 7.4 Swift #2 14.51 259,048 1373 55.29 98% 94% 94% 94% 8.0 OCaml #3 15.81 258,380 1839 42.53 39% 42% 93% 95% 11 Haskell GHC #2 22.61 802,944 1492 87.50 97% 96% 96% 97% 19 Haskell GHC #3 37.00 413,952 2266 133.16 90% 92% 91% 89% 22 OCaml 43.82 338,264 894 43.81 0% 100% 0% 0% by secs by mem by gz by cpu secs