fannkuch-redux First a few simple programs. Then optimisations, multicore parallelism, [pdf] vector parallelism. Last hand-written vector instructions and "unsafe" programs. source secs mem gz Classic Fortran 38.62 10,908 599 OCaml #2 45.96 11,132 472 Swift 34.60 11,220 451 × source secs mem gz cpu secs cpu load 1.0 Lua 11 min 10,804 462 11 min 0% 0% 0% 100% 1.0 Perl #3 20 min 10,840 427 20 min 100% 0% 0% 0% 1.0 Perl 30 min 10,844 457 30 min 0% 0% 100% 0% 1.0 Dart #3 42.40 10,888 546 42.40 100% 0% 0% 1% 1.0 Dart #2 60.45 10,888 504 60.45 100% 0% 0% 0% 1.0 C++ g++ #3 36.06 10,908 593 36.05 0% 0% 0% 100% 1.0 Classic Fortran 38.62 10,908 599 38.62 100% 0% 0% 0% 1.0 C++ g++ #4 9.82 10,912 1439 38.52 98% 99% 94% 99% 1.0 C++ g++ 10.39 10,912 1059 40.77 98% 100% 99% 94% 1.0 C++ g++ #2 9.51 10,912 1440 37.33 99% 99% 94% 99% 1.0 Rust #4 7.21 10,932 1020 28.34 99% 99% 100% 94% 1.0 Chapel #2 8.09 10,932 731 32.18 99% 99% 99% 99% 1.0 Rust #5 7.77 10,932 1016 30.49 99% 99% 100% 93% 1.0 Ada 2012 GNAT #3 8.23 10,936 2113 32.72 99% 99% 99% 99% 1.0 C++ g++ #5 7.99 10,936 980 31.23 93% 98% 99% 100% 1.0 Go #3 8.25 10,936 969 32.92 99% 100% 99% 99% 1.0 Matz's Ruby #2 1h 10 min 10,952 1455 4h 31 min 95% 97% 98% 96% 1.0 Rust #2 17.99 11,036 1191 70.95 96% 99% 99% 99% 1.0 Python 3 #6 15 min 11,080 385 15 min 99% 0% 0% 0% 1.0 OCaml #4 8.77 11,128 1011 35.06 99% 99% 99% 100% 1.0 Go 11.83 11,128 900 47.26 100% 99% 100% 99% 1.0 OCaml #2 45.96 11,132 472 45.96 0% 0% 0% 100% 1.0 OCaml #3 8.76 11,132 1017 34.99 99% 99% 99% 99% 1.0 OCaml 51.66 11,132 523 51.65 99% 1% 0% 0% 1.0 Classic Fortran #3 10.26 11,160 1158 40.95 99% 99% 99% 100% 1.0 Matz's Ruby 3h 16 min 11,172 384 3h 16 min 17% 1% 52% 30% 1.0 Dart #5 12.61 11,208 1220 49.72 98% 98% 99% 98% 1.0 Free Pascal 10.54 11,220 1024 42.09 100% 100% 99% 99% 1.0 Swift 34.60 11,220 451 34.59 0% 100% 0% 0% 1.0 C gcc #5 7.53 11,224 910 29.37 99% 93% 98% 100% 1.0 C gcc 42.02 11,244 508 42.02 1% 0% 100% 0% 1.0 C gcc #3 39.56 11,248 567 39.56 100% 0% 0% 0% 1.1 Perl #2 7 min 12,164 570 27 min 99% 99% 99% 100% 1.2 Go #2 11.89 12,708 896 47.47 99% 99% 99% 99% 1.2 PHP #2 187.39 12,976 441 187.38 100% 0% 0% 0% 1.2 PHP 223.52 12,988 482 223.42 0% 0% 0% 100% 1.2 Haskell GHC 294.61 13,344 559 298.11 28% 19% 31% 24% 1.2 PHP #4 54.97 13,440 1162 217.94 99% 99% 98% 100% 1.2 PHP #3 55.84 13,500 1160 222.26 99% 99% 99% 100% 1.3 Python 3 #4 285.20 14,264 950 18 min 99% 99% 100% 96% 1.4 Lisp SBCL #2 46.46 15,576 517 46.46 0% 0% 0% 100% 2.3 Ruby 24 min 24,936 384 24 min 39% 0% 60% 0% 2.7 Ruby #2 169.71 29,140 1455 10 min 96% 96% 100% 95% 2.8 Lisp SBCL #4 9.96 29,748 1527 39.01 98% 98% 98% 99% 2.8 Lisp SBCL #3 36.37 29,828 826 36.36 0% 0% 0% 100% 2.8 C# .NET #6 9.16 30,572 1068 36.34 99% 99% 99% 99% 3.3 Lisp SBCL #5 30.77 35,984 681 30.77 0% 0% 100% 0% 3.5 Erlang 74.60 37,452 1038 292.72 96% 98% 99% 99% 3.6 Java #2 46.85 38,492 514 46.91 0% 100% 0% 0% 3.7 Java #3 40.36 39,932 1257 40.43 6% 93% 0% 1% 3.7 Java 10.71 40,324 1282 42.25 99% 98% 99% 97% 5.1 VW Smalltalk 7 min 55,112 916 8 min 90% 14% 4% 5% 7.5 Node js #5 11.08 81,124 1313 43.87 98% 99% 98% 99% 9.9 F# .NET #6 8.33 106,496 1097 32.25 97% 93% 98% 99% 10 F# .NET #5 9.75 111,368 912 38.19 97% 97% 98% 98% 17 Julia 39.10 179,144 434 39.37 0% 0% 100% 0% C# .NET #7 Bad Output Haskell GHC #3 Make Error hand-written vector instructions | "unsafe" × source secs mem gz cpu secs cpu load 1.0 C++ g++ #7 14.04 10,912 1150 14.04 0% 0% 100% 0% 1.0 C++ g++ #6 3.23 10,936 1528 12.80 99% 97% 100% 99% 1.0 Rust #6 3.51 11,036 1253 13.93 99% 99% 99% 99% 1.0 Haskell GHC #5 10.35 11,044 842 41.05 99% 99% 99% 97% 1.0 Swift #3 8.24 11,220 1097 32.62 100% 98% 99% 98% 1.0 C gcc #4 14.04 11,236 1183 14.03 100% 0% 0% 0% 1.0 C gcc #2 11.12 11,236 1557 43.67 100% 98% 99% 94% 1.0 C gcc #6 2.10 11,236 1576 8.34 99% 99% 98% 100% 1.1 Haskell GHC #4 43.22 11,856 665 43.96 18% 9% 54% 19% 2.3 Haskell GHC #6 12.08 24,560 1113 47.27 99% 98% 96% 99% 2.5 Haskell GHC #2 47.31 26,764 808 131.54 69% 70% 70% 71% 2.8 C# .NET #8 2.14 30,496 1473 8.33 96% 98% 97% 97% 2.9 C# .NET #9 8.06 31,844 1225 31.90 98% 99% 98% 98% 6.4 Racket 140.73 69,084 649 140.73 0% 0% 0% 100% 6.4 Racket #2 112.85 69,308 908 112.85 100% 0% 0% 0% 6.6 Racket #3 30.68 71,424 1101 116.70 98% 95% 99% 99% 19 Julia #3 7.90 202,488 886 30.35 96% 95% 96% 97% 19 Julia #2 7.85 209,420 1067 29.81 96% 95% 94% 94% by secs by mem by gz by cpu secs