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.6 Rust #7 2.86 134,084 1585 9.12 89% 67% 66% 99% 1.8 Rust #8 3.68 137,580 1549 10.41 45% 93% 59% 86% 1.8 C# .NET 3.02 184,620 2046 10.45 76% 86% 92% 92% 1.8 Rust #6 2.90 159,464 1697 10.51 98% 90% 89% 87% 2.0 Rust #5 3.91 137,764 1745 11.86 56% 91% 93% 63% 2.1 F# .NET #6 3.88 186,720 1913 12.22 98% 77% 64% 76% 2.2 C gcc 3.80 130,432 1512 12.64 77% 99% 72% 87% 2.2 C# .NET #6 4.98 188,080 1615 12.69 64% 98% 41% 53% 2.3 Ada 2012 GNAT #2 6.75 259,564 4911 13.58 86% 23% 15% 78% 2.3 Julia #8 5.74 441,148 965 13.70 68% 72% 38% 60% 2.3 C++ g++ #3 4.19 165,592 1280 13.77 80% 94% 79% 78% 2.5 C++ g++ 6.90 757,080 1452 14.68 92% 10% 99% 11% 2.8 F# .NET #2 4.84 199,004 1932 16.23 75% 76% 97% 88% 2.8 Rust #2 6.10 139,388 1350 16.32 75% 76% 47% 69% 2.8 Java 5.01 368,104 1821 16.33 92% 79% 78% 77% 2.8 F# .NET #5 4.77 199,008 1964 16.60 81% 90% 95% 81% 2.8 Lisp SBCL #4 16.70 156,288 2292 16.70 0% 100% 0% 0% 2.9 Lisp SBCL #5 16.83 156,416 2323 16.83 0% 100% 0% 0% 2.9 Chapel #4 4.96 192,256 1071 17.07 99% 81% 82% 82% 3.1 Rust #9 6.77 135,684 1850 18.07 30% 44% 96% 98% 3.1 Rust #4 6.70 137,288 1755 18.12 45% 99% 93% 33% 3.5 Chapel #3 5.86 192,256 1040 20.64 99% 84% 84% 84% 4.0 Julia #7 8.71 430,084 1379 23.62 53% 73% 81% 65% 4.3 Java #6 7.18 365,592 1614 25.01 83% 91% 85% 88% 4.3 Java #3 7.30 365,348 1642 25.39 95% 84% 83% 86% 4.3 F# .NET #3 11.72 1,323,268 1124 25.39 71% 25% 90% 30% 4.6 F# .NET #4 10.51 1,321,116 1522 26.82 50% 82% 72% 52% 4.9 Go #7 7.52 162,944 1613 28.68 95% 97% 95% 95% 5.1 Go #6 8.17 145,152 1596 29.90 87% 97% 97% 85% 5.2 Go #3 8.38 145,152 1729 30.32 93% 87% 97% 84% 5.2 Go #4 9.07 139,904 1552 30.33 97% 82% 82% 72% 5.9 Java #4 34.43 195,584 1887 34.79 8% 92% 0% 0% 6.5 Java #5 16.05 219,872 2225 38.17 33% 25% 93% 86% 6.8 Lisp SBCL #6 10.97 541,312 2485 40.13 98% 88% 90% 90% 7.0 C# .NET #7 40.57 761,912 1449 41.01 55% 43% 1% 1% 7.0 C# .NET #4 11.52 775,588 1725 41.26 87% 90% 89% 92% 7.1 Lisp SBCL 12.76 550,784 2431 41.85 98% 76% 77% 76% 7.1 Node.js #3 15.38 422,240 1817 41.85 74% 95% 60% 43% 8.9 Lisp SBCL #3 51.99 558,208 1297 51.99 0% 0% 100% 0% 9.1 Lisp SBCL #2 53.23 558,208 1291 53.23 100% 0% 0% 0% 10 Dart #3 19.89 221,660 1526 59.29 79% 74% 81% 65% 10 OCaml #2 26.57 314,252 1247 60.40 33% 79% 80% 34% 11 Racket #4 63.67 926,924 893 63.66 81% 0% 0% 19% 11 Rust 21.62 157,080 1086 64.67 50% 96% 60% 92% 12 PHP #4 20.89 260,560 1084 69.85 72% 77% 96% 89% 13 Haskell GHC 22.83 659,584 1067 77.84 82% 87% 83% 89% 15 F# .NET 24.14 1,073,324 713 86.18 86% 90% 92% 89% 17 Lua #2 97.75 596,472 620 97.73 0% 0% 0% 100% 19 Node.js #2 37.49 479,968 941 112.46 64% 97% 73% 64% 20 Node.js 39.64 335,272 1011 115.24 61% 71% 96% 60% 20 Perl #2 121.96 659,584 365 120.07 98% 0% 0% 0% 22 Julia 132.23 1,967,872 703 131.10 0% 0% 98% 0% 22 Perl 38.23 1,247,428 659 131.70 83% 91% 86% 83% 23 Perl #4 41.87 1,070,080 483 136.26 94% 87% 70% 74% 29 Perl #3 52.15 1,147,904 520 171.73 89% 69% 98% 71% 32 Python 3 #3 48.64 262,016 1970 184.81 96% 94% 94% 94% 34 Racket 200.38 2,438,152 554 198.38 0% 99% 0% 0% 44 Ruby yjit #7 256.92 393,216 792 255.31 28% 25% 32% 13% 44 Ruby yjit #2 255.78 181,700 426 255.60 0% 0% 99% 0% 45 Python 3 #8 87.79 506,880 663 262.44 60% 84% 96% 58% 45 Python 3 #9 77.06 380,416 614 263.65 79% 71% 95% 96% 47 Ruby yjit #3 272.84 203,672 546 273.06 18% 39% 10% 32% 47 Python 3 275.64 500,224 499 274.74 0% 0% 99% 0% 51 Ruby yjit 84.88 172,436 583 5 min 85% 92% 80% 96% 73 VW Smalltalk #5 7 min 385,292 1323 7 min 0% 29% 0% 70% 88 Matz's Ruby #2 8 min 168,140 420 8 min 0% 0% 0% 99% 95 Dart 9 min 464,520 628 9 min 0% 100% 0% 0% 98 VW Smalltalk 9 min 386,160 1116 9 min 0% 0% 100% 0% 109 Matz's Ruby 191.91 147,340 576 10 min 97% 98% 72% 68% 129 Matz's Ruby #3 12 min 168,844 540 12 min 60% 4% 39% 1% Erlang #3 1h 38 min 556,024 945 1h 42 min 29% 15% 37% 22% Erlang 1h 38 min 4,485,776 944 1h 43 min 22% 16% 39% 27% 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.2 OCaml #3 15.81 258,380 1839 42.53 39% 42% 93% 95% 7.5 OCaml 43.82 338,264 894 43.81 0% 100% 0% 0% 9.4 Swift #2 14.51 259,048 1373 55.29 98% 94% 94% 94% 15 Haskell GHC #2 22.61 802,944 1492 87.50 97% 96% 96% 97% 23 Haskell GHC #3 37.00 413,952 2266 133.16 90% 92% 91% 89% by secs by mem by gz by cpu secs