The Computer Language
24.06 Benchmarks Game

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.77 1,495,228 295    
  C gcc #6 0.97 696,664 828    
  Dart jit #5 5.18 2,147,352 942    
 
 
 
× source secs mem gz cpu secs cpu load
1.0 Perl #4 5.76 998,608 268 5.76 100% 0% 0% 0%
1.0 Ruby yjit #2 24.38 1,001,932 272 24.37 0% 0% 100% 0%
1.0 Matz's Ruby #2 23.61 688,216 272 23.61 58% 41% 0% 0%
1.1 PHP #2 11.83 1,787,272 288 11.82 0% 0% 100% 0%
1.1 Perl #3 6.77 1,495,228 295 6.76 1% 1% 99% 0%
1.1 Ruby yjit #5 9.94 1,624,104 301 9.94 0% 0% 100% 0%
1.2 PHP 9.96 1,489,428 323 9.96 0% 0% 100% 0%
1.3 Python 3 #4 13.85 4,003,072 343 13.85 99% 0% 0% 0%
1.6 OCaml #2 9.49 1,067,776 426 9.49 0% 0% 100% 0%
1.6 Python 3 #2 10.13 1,788,624 440 10.12 100% 0% 0% 0%
1.7 PHP #3 7.75 536,792 452 12.06 30% 5% 50% 69%
1.7 Julia #9 1.85 1,040,076 456 1.98 99% 8% 1% 0%
1.7 Julia #2 36.22 1,720,448 464 36.57 0% 0% 99% 1%
1.8 Python 3 10.36 1,986,924 484 10.36 100% 0% 0% 0%
1.8 Matz's Ruby #3 9.49 3,467,256 490 17.96 76% 50% 33% 30%
1.8 Ruby yjit #3 9.05 3,935,068 490 17.39 10% 93% 39% 51%
1.9 Ruby yjit 18.71 5,147,824 521 36.50 94% 7% 58% 36%
2.0 Julia #8 1.61 1,041,624 531 1.73 8% 90% 8% 1%
2.1 Chapel #5 2.00 2,133,504 554 3.55 94% 27% 26% 31%
2.1 Lua #2 41.12 2,654,652 560 41.10 0% 100% 0% 0%
2.1 Racket 40.52 2,047,132 560 40.51 0% 0% 0% 100%
2.1 Dart #3 60.48 6,379,856 571 63.33 3% 95% 1% 3%
2.1 Dart #2 97.74 6,335,548 575 102.00 3% 97% 2% 3%
2.2 C++ g++ 6.50 979,912 599 6.50 0% 100% 0% 0%
2.2 Lua #4 49.35 1,030,016 600 49.33 0% 100% 0% 0%
2.3 F# .NET 36.47 1,960,916 603 37.87 1% 1% 99% 1%
2.3 Ruby yjit #4 5.89 2,511,208 608 11.52 12% 53% 97% 34%
2.3 Go #3 2.50 800,128 609 2.60 86% 2% 14% 0%
2.3 Go #2 2.24 800,512 614 2.34 17% 1% 86% 0%
2.4 Dart 16.73 1,000,656 651 17.64 1% 1% 2% 99%
2.4 C gcc #5 1.52 994,176 654 1.52 0% 0% 1% 100%
2.4 Java  #4 5.59 1,890,020 656 5.71 1% 56% 4% 40%
2.6 C++ g++ #5 36.24 771,432 704 36.24 0% 0% 100% 0%
2.6 Chapel #3 1.87 2,133,504 709 3.46 94% 28% 29% 34%
2.8 C gcc #2 1.05 994,560 757 1.57 96% 22% 18% 14%
2.8 Lua #5 41.96 2,169,636 758 41.96 100% 0% 0% 0%
2.8 Java #6 3.40 2,031,576 760 4.06 38% 80% 0% 1%
2.9 Free Pascal #2 3.81 525,052 773 3.81 0% 0% 0% 100%
2.9 Classic Fortran #2 42.39 769,748 778 42.38 100% 0% 0% 0%
3.0 Python 3 #3 4.82 508,760 803 4.82 0% 100% 0% 0%
3.1 Python 3 #6 7.71 2,484,208 821 11.18 27% 71% 44% 3%
3.1 C gcc #6 0.97 696,664 828 1.39 25% 100% 17% 1%
3.4 Lisp SBCL 5.44 1,494,656 911 5.44 100% 0% 0% 0%
3.5 C# .NET #3 7.31 1,571,904 934 11.48 29% 43% 66% 19%
3.5 Dart #5 8.64 1,994,492 942 11.81 13% 31% 51% 41%
3.5 Ada 2012 GNAT 12.59 528,492 943 12.58 0% 0% 0% 100%
3.6 Python 3 #5 4.03 1,500,508 960 7.30 0% 89% 38% 54%
3.8 Classic Fortran 4.22 986,300 1026 4.22 100% 1% 0% 0%
4.1 Rust #3 0.98 995,200 1105 1.70 44% 46% 57% 24%
4.2 Java #5 4.78 1,096,264 1115 4.92 7% 62% 1% 34%
4.2 C# .NET 2.97 798,004 1130 3.15 86% 2% 15% 4%
4.7 Chapel #8 0.95 1,057,024 1260 2.75 100% 65% 63% 63%
4.9 Erlang 26 min 2,180,832 1309 30 min 41% 21% 15% 35%
4.9 C# .NET #7 1.56 941,012 1312 4.23 54% 95% 90% 33%
5.0 Rust #2 0.96 995,072 1332 1.59 57% 44% 43% 21%
5.0 Go #6 1.93 1,246,404 1340 3.43 41% 35% 46% 54%
5.1 OCaml #3 2.29 20,616 1361 5.83 60% 61% 67% 65%
5.8 C gcc #8 0.49 499,868 1551 0.81 24% 22% 22% 100%
6.0 C# .NET #5 2.64 1,026,620 1620 3.67 11% 20% 13% 96%
6.1 C# .NET #6 1.64 1,027,256 1627 3.95 70% 92% 57% 22%
6.2 Java #7 23.61 1,036,152 1654 6.24 5% 11% 5% 4%
6.8 C++ g++ #6 3.26 1,517,580 1827 4.32 71% 30% 20% 12%
12 Ada 2012 GNAT #2 2.32 822,332 3285 2.64 40% 75% 0% 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 Timed Out
Matz's Ruby Failed
Matz's Ruby #5 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.68 500,480 716 3.68 0% 1% 100% 0%
3.7 Haskell GHC #2 7.33 3,814,400 998 7.45 30% 1% 69% 0%
3.9 Racket #2 9.10 851,780 1038 9.10 0% 0% 0% 100%
3.9 Haskell GHC #4 3.73 505,344 1047 3.81 85% 8% 7% 1%
4.6 Node.js #2 15.95 727,052 1228 16.59 78% 3% 20% 2%
4.8 Swift 1.95 796,836 1293 2.38 41% 0% 77% 4%
5.1 OCaml 2.23 20,552 1372 5.07 54% 60% 53% 58%
7.1 C gcc #7 0.43 499,928 1899 0.59 55% 14% 11% 56%
7.8 C++ g++ #2 0.71 499,712 2099 0.71 59% 1% 0% 41%
9.9 C# .NET #8 0.56 736,084 2641 1.35 87% 78% 7% 71%
10 Rust 0.53 498,816 2762 0.83 20% 19% 21% 100%