reverse-complement First a few simple programs. Then optimisations, multicore parallelism, [pdf] vector parallelism. Last hand-written vector instructions and "unsafe" programs. source secs mem gz Perl #3 6.55 1,495,204 295 C gcc #6 0.96 703,064 828 Dart JIT #5 4.89 2,144,056 942 × source secs mem gz cpu secs cpu load 1.0 Matz's Ruby #2 23.82 755,060 264 23.82 100% 2% 3% 1% 1.0 Perl #4 5.65 998,596 268 5.65 0% 0% 0% 100% 1.0 Ruby #2 24.46 1,001,852 272 24.46 100% 0% 0% 0% 1.1 PHP #2 11.67 1,787,276 288 11.67 0% 0% 100% 0% 1.1 Perl #3 6.55 1,495,204 295 6.55 1% 0% 0% 100% 1.1 Ruby #5 10.77 1,624,300 301 10.76 100% 0% 0% 0% 1.2 PHP 9.76 1,489,428 323 9.76 0% 100% 1% 0% 1.3 Python 3 #4 13.91 4,003,712 343 13.91 0% 100% 0% 0% 1.6 OCaml #2 9.26 888,064 426 9.26 0% 100% 0% 0% 1.7 Python 3 #2 10.46 1,788,876 440 10.46 0% 1% 0% 100% 1.7 PHP #3 7.59 536,536 452 11.93 23% 30% 51% 51% 1.7 Julia #9 1.83 1,038,224 456 1.95 6% 1% 2% 100% 1.8 Julia #2 35.46 1,718,176 464 35.82 0% 0% 99% 1% 1.8 Python 3 10.69 1,987,304 484 10.69 0% 0% 100% 0% 1.9 Ruby #3 9.57 4,232,604 490 17.72 35% 49% 68% 35% 2.0 Ruby 18.75 5,147,124 521 36.24 4% 36% 99% 55% 2.0 Julia #8 1.58 1,039,672 531 1.70 1% 7% 100% 3% 2.1 Chapel #5 1.79 1,884,928 554 3.30 94% 28% 29% 33% 2.1 Racket 40.99 2,047,504 560 40.99 0% 0% 100% 0% 2.1 Lua #2 40.39 2,654,604 560 40.39 0% 100% 0% 0% 2.2 Dart #3 60.93 6,340,156 571 62.93 2% 95% 3% 2% 2.2 Dart #2 100.97 6,336,040 575 104.01 96% 2% 2% 1% 2.3 C++ g++ 6.56 980,060 599 6.56 100% 0% 0% 0% 2.3 Lua #4 49.05 1,030,016 600 49.04 0% 0% 100% 0% 2.3 F# .NET 37.87 1,962,472 603 39.22 8% 38% 3% 56% 2.3 Ruby #4 6.88 2,510,956 608 12.51 12% 36% 91% 43% 2.3 Go #3 2.47 802,048 609 2.56 82% 4% 6% 12% 2.3 Go #2 2.21 802,176 614 2.30 16% 85% 5% 0% 2.5 Dart 18.00 1,001,052 651 18.86 1% 2% 2% 99% 2.5 C gcc #5 1.50 994,176 654 1.50 0% 3% 100% 0% 2.5 Java #4 5.57 1,889,928 656 5.68 1% 97% 2% 0% 2.7 C++ g++ #5 35.10 771,556 704 35.10 0% 100% 0% 0% 2.7 Chapel #3 1.68 1,618,560 709 3.23 94% 32% 31% 39% 2.7 Lua #5 41.27 2,169,636 725 41.26 0% 100% 0% 0% 2.9 C gcc #2 1.05 994,432 757 1.55 13% 18% 30% 86% 2.9 Java #6 3.33 2,031,460 760 3.96 38% 1% 0% 79% 2.9 Free Pascal #2 3.77 525,048 773 3.77 0% 0% 1% 100% 2.9 Classic Fortran #2 41.23 769,748 778 41.23 0% 0% 0% 100% 3.0 Python 3 #3 5.18 509,108 803 5.18 0% 99% 0% 0% 3.1 Python 3 #6 7.86 2,484,084 821 11.49 99% 20% 0% 28% 3.1 C gcc #6 0.96 703,064 828 1.37 19% 100% 0% 25% 3.5 Lisp SBCL 5.35 1,517,184 911 5.34 0% 100% 0% 0% 3.5 C# .NET #3 7.24 1,572,432 934 11.37 53% 21% 65% 19% 3.6 Dart #5 9.27 1,994,704 942 12.38 47% 27% 26% 32% 3.6 Ada 2012 GNAT 12.53 528,356 943 12.53 0% 0% 0% 100% 3.6 Python 3 #5 4.07 1,500,240 960 7.41 38% 89% 54% 1% 3.9 Classic Fortran 4.15 986,304 1026 4.14 0% 0% 0% 100% 4.2 Rust #3 0.87 995,072 1105 1.58 81% 46% 27% 27% 4.2 Java #5 4.73 1,096,344 1115 4.86 2% 89% 4% 8% 4.3 C# .NET 2.97 798,068 1130 3.12 3% 2% 57% 44% 4.8 Chapel #8 0.95 1,057,024 1260 2.74 90% 63% 64% 72% 5.0 Erlang 29 min 1,801,408 1309 33 min 26% 24% 31% 30% 5.0 C# .NET #7 1.55 935,720 1312 4.20 80% 54% 85% 55% 5.0 Rust #2 0.85 995,200 1332 1.50 25% 58% 67% 26% 5.1 Go #6 1.84 1,249,840 1340 3.30 66% 25% 45% 45% 5.2 OCaml #3 2.28 19,816 1361 6.06 71% 67% 62% 63% 5.9 C gcc #8 0.50 499,872 1551 0.86 28% 26% 94% 32% 6.1 C# .NET #5 2.63 1,026,424 1620 3.63 29% 18% 1% 90% 6.2 C# .NET #6 1.60 1,027,884 1627 3.85 43% 77% 30% 92% 6.3 Java #7 23.06 1,036,296 1654 6.31 4% 6% 13% 4% 6.9 C++ g++ #6 3.20 1,517,660 1827 4.22 21% 14% 30% 67% 12 Ada 2012 GNAT #2 2.26 821,912 3285 2.58 74% 0% 39% 0% C++ g++ #3 Bad Output Dart #4 Bad Output Erlang #4 Timed Out Erlang #3 Timed Out F# .NET #4 Timed Out F# .NET #5 Timed Out Go #5 Bad Output Go Failed Java #3 Bad Output Java #8 Bad Output Node js #7 Bad Output Lisp SBCL #2 Failed Matz's Ruby Failed Matz's Ruby #5 Failed Matz's Ruby #3 Failed Matz's Ruby #4 Failed VW Smalltalk Bad Output hand-written vector instructions | "unsafe" × source secs mem gz cpu secs cpu load 2.7 C gcc #4 3.66 500,480 716 3.66 0% 100% 0% 2% 3.8 Haskell GHC #2 6.81 3,812,096 998 6.90 14% 1% 78% 7% 3.9 Racket #2 8.99 783,600 1038 8.98 0% 49% 0% 50% 4.0 Haskell GHC #4 3.76 505,600 1047 3.82 1% 0% 67% 32% 4.7 Node js #2 15.89 717,660 1228 16.53 2% 2% 50% 49% 4.9 Swift 1.88 796,840 1293 2.30 77% 0% 42% 5% 5.2 OCaml 2.23 19,816 1372 5.42 55% 59% 65% 61% 7.2 C gcc #7 0.43 499,872 1899 0.58 14% 14% 100% 16% 8.0 C++ g++ #2 0.70 499,840 2099 0.70 0% 2% 0% 100% 10 C# .NET #8 0.56 730,092 2641 1.32 76% 69% 45% 49% 10 Rust 0.52 498,816 2762 0.83 100% 19% 23% 19% by secs by mem by gz by cpu secs