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 13.6113.61132,8643415  0% 0% 0% 100%
1.3C++ GNU g++ #3 18.0518.05130,7962313  0% 0% 0% 100%
1.4C++ GNU g++ #2 18.5118.51137,2362673  0% 0% 0% 100%
1.5C++ GNU g++ 21.0921.09130,7762106  0% 2% 6% 100%
2.1Ada 2005 GNAT #2 28.5028.51254,0244504  0% 0% 0% 100%
3.5Java 6 -server #2 46.9046.95351,0041602  0% 0% 0% 100%
4.0GNU gcc #2 53.8453.83843,1321141  0% 0% 0% 100%
4.6Pascal Free Pascal #2 62.7862.77127,7802383  0% 0% 0% 100%
4.8Lua LuaJIT #2 65.6365.63487,092613  0% 0% 0% 100%
4.8Lua LuaJIT 65.7865.77609,124601  0% 0% 0% 100%
6.3Java 6 -server 85.1685.23758,4561330  0% 0% 0% 100%
6.9Haskell GHC #3 93.7993.79409,2162749  0% 0% 0% 100%
7.4C# Mono #3 100.95100.95567,8081404  0% 0% 0% 100%
7.7C# Mono 104.23104.22467,8721420  0% 0% 0% 100%
8.5Scala #4 116.00116.03607,9681287  0% 0% 0% 100%
9.1Clean 124.30124.291,049,1481511  0% 0% 0% 100%
10Fortran Intel 137.35137.34205,6602238  0% 0% 0% 100%
11GNU gcc 141.91144.32134,1041340  0% 0% 0% 100%
11Lisp SBCL #3 151.12151.12392,5481284  0% 0% 0% 100%
13C# Mono #2 180.34180.61526,3641012  0% 0% 0% 100%
16Lua 217.60217.59675,524601  0% 0% 0% 100%
16Lua #2 223.02223.43667,400613  0% 0% 0% 100%
19Perl #2 249.61252.46709,264359  0% 0% 0% 100%
20Go 6g 8g 269.17271.79389,740874  0% 0% 0% 100%
20Perl 269.61272.492,697,908648  0% 0% 0% 100%
22Erlang HiPE #3 294.36295.52574,028932  0% 99% 0% 0%
23Scheme PLT 5 min5 min1,294,916623  0% 0% 0% 100%
23Haskell GHC #2 5 min5 min2,745,1041767  0% 0% 0% 100%
26JavaScript V8 #3 5 min5 min332,880390  0% 1% 0% 100%
26JavaScript V8 6 min6 min332,964423  0% 0% 0% 100%
30Lisp SBCL 6 min6 min379,596847  6% 11% 3% 100%
31Python CPython #6 7 min7 min439,968520  0% 0% 0% 100%
35Python CPython #5 7 min7 min439,972557  8% 4% 4% 100%
38PHP #2 8 min8 min247,916914  0% 0% 0% 100%
38PHP #3 8 min8 min247,9121268  0% 0% 0% 100%
38Ruby JRuby #2 8 min8 min423,656420  0% 0% 0% 100%
40JavaScript TraceMonkey 9 min9 min659,444423  0% 0% 0% 100%
41Python CPython 9 min9 min439,248475  0% 0% 0% 100%
45Python 3 #2 10 min10 min842,860563  0% 0% 0% 100%
46Python 3 #4 10 min10 min842,860577  0% 0% 0% 100%
51Python 3 11 min11 min840,240487  0% 0% 0% 100%
53JavaScript TraceMonkey #3 12 min12 min427,748390  0% 0% 0% 100%
59Ruby 1.9 #2 13 min13 min163,236420  0% 0% 0% 100%
62Ruby MRI #2 14 min14 min147,984420  0% 0% 0% 100%
71Java 6 -Xint #2 16 min16 min299,1161602  0% 0% 0% 100%
89Java 6 -Xint 20 min20 min600,7681330  0% 0% 0% 100%
ATS Make Error1336
Erlang HiPE Failed930
Erlang HiPE #2 Failed997
JavaScript TraceMonkey #2 Bad Output400
JavaScript V8 #2 Failed400
Lisaac Make Error1242
Lisp SBCL #4 Failed1434
Mozart/Oz #2 Failed771
Mozart/Oz Failed791
OCaml #3 Failed1095
OCaml Failed870
OCaml #2 Failed1205
Pascal Free Pascal Bad Output2380
Smalltalk VisualWorks Bad Output1191
Smalltalk VisualWorks #4 Bad Output1296
interesting alternative programs
0.7C++ GNU g++ #5 9.279.2741,3243416
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