How big is the measured performance difference?

Each chart bar shows how many times more Time or how many times more Memory one unidentified ↓ k-nucleotide program used, compared to the program that used least Time or the program that used least Memory.

 k-nucleotide benchmark ~240MB N=25,000,000

This table shows 5 measurements - CPU Time, Elapsed Time, Memory, Code and ~ CPU Load.

Compare how much Memory the k-nucleotide programs used - sort Memory KB. Compare how much Code the programs used - sort Code B

Column × shows how many times more each program used compared to the program that used least.

    sort sort sort sort
  ×   Program Source Code CPU secs Elapsed secs Memory KB Code B ~ CPU Load
1.0C++ GNU g++ #6 11.4111.41142,2643415  0% 0% 0% 100%
1.5C++ GNU g++ #3 17.1017.10135,7922313  0% 0% 0% 100%
1.6C++ GNU g++ #2 18.2918.30146,2642673  0% 0% 0% 100%
1.9C++ GNU g++ 21.1521.16135,7922106  0% 0% 0% 100%
2.4Ada 2005 GNAT #2 27.5227.54256,6924504  0% 0% 0% 100%
3.3ATS 37.1137.12125,8641336  0% 0% 0% 100%
4.9Java 6 -server #2 55.7555.78368,4241602  0% 0% 0% 100%
6.9GNU gcc #2 78.5078.501,682,7641141  0% 0% 0% 100%
7.6Fortran Intel 86.9186.90229,9082238  0% 0% 0% 100%
7.7Scala #4 87.7387.82902,2121287  0% 0% 0% 100%
7.7Java 6 -server 87.8387.891,230,9961330  0% 0% 0% 100%
7.7OCaml #2 88.0988.09574,5881205  0% 0% 0% 100%
8.0OCaml 91.2491.23496,616870  0% 0% 0% 100%
8.1OCaml #3 92.0392.03476,9801095  0% 0% 0% 100%
8.5C# Mono #3 96.7796.76495,7641404  0% 0% 0% 100%
9.4C# Mono 107.61107.61560,9361420  0% 0% 0% 100%
9.5Haskell GHC #3 107.98107.98433,2762749  1% 1% 1% 100%
11Lisp SBCL #3 121.40121.39348,6201284  0% 0% 0% 100%
11Clean 124.87124.872,097,7361511  0% 0% 0% 100%
11Pascal Free Pascal 125.05125.05129,8482380  0% 0% 0% 100%
11Pascal Free Pascal #2 125.20127.79129,8482383  0% 0% 0% 100%
13GNU gcc 141.66145.39150,6121340  0% 0% 0% 100%
17C# Mono #2 194.23194.81524,6521012  0% 0% 0% 100%
19Lua 221.06221.05600,988601  0% 0% 0% 100%
20Perl #2 225.09228.97780,228359  0% 0% 0% 100%
20Lua #2 231.17231.16684,924613  0% 0% 0% 100%
20Scheme PLT 232.64232.801,298,828623  0% 0% 0% 100%
21Perl 243.28243.532,827,104648  0% 0% 1% 100%
27Go 6g 8g 5 min5 min379,480874  0% 0% 0% 100%
28Erlang HiPE #3 5 min5 min646,524932  1% 10% 89% 1%
29Python CPython #6 5 min5 min489,420520  0% 0% 1% 100%
30Erlang HiPE 5 min5 min3,779,824930  3% 92% 5% 3%
35Python CPython #5 6 min6 min489,424557  0% 0% 0% 100%
37Lisp SBCL 7 min7 min341,040847  0% 0% 0% 100%
38PHP #3 7 min7 min248,7001268  0% 0% 0% 100%
38JavaScript TraceMonkey 7 min7 min1,057,344423  0% 0% 0% 100%
40PHP #2 7 min7 min248,704914  0% 0% 0% 100%
41Python CPython 7 min7 min486,904475  0% 0% 0% 100%
43Ruby JRuby #2 8 min8 min515,084420  0% 0% 0% 100%
47JavaScript TraceMonkey #3 9 min9 min442,876390  0% 0% 0% 100%
75Ruby MRI #2 14 min14 min166,344420  0% 0% 0% 100%
77Java 6 -Xint #2 14 min14 min324,6801602  0% 0% 0% 100%
107Java 6 -Xint 20 min20 min654,3601330  0% 0% 0% 100%
Erlang HiPE #2 Failed997
Haskell GHC #2 Failed1767
JavaScript TraceMonkey #2 Bad Output400
JavaScript V8 Timed Out1h 00 min423
JavaScript V8 #2 Failed400
JavaScript V8 #3 Timed Out1h 00 min390
Lisp SBCL #4 Failed1434
Smalltalk VisualWorks Bad Output1191
Smalltalk VisualWorks #4 Bad Output1296
interesting alternative programs
0.7C++ GNU g++ #5 7.687.6850,4963416
missing programs
F# Mono No program
Java 6 steady state No program

 k-nucleotide benchmark : Hashtable update and k-nucleotide strings

diff program output for this 100KB input file (generated with the fasta program N = 10000) with this output file to check your program is correct before contributing.

We use FASTA files generated by the fasta benchmark as input for this benchmark. Note: the file may include both lowercase and uppercase codes.

Each program should

In practice, less brute-force would be used to calculate k-nucleotide frequencies, for example Virus Classification using k-nucleotide Frequencies and A Fast Algorithm for the Exhaustive Analysis of 12-Nucleotide-Long DNA Sequences. Applications to Human Genomics (105KB pdf).

Revised BSD license