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 14.804.31132,4523415  81% 80% 99% 84%
1.3C++ GNU g++ #2 20.125.50161,5162673  89% 88% 89% 99%
1.7C++ GNU g++ #3 26.857.48153,2762313  100% 86% 87% 87%
1.9C++ GNU g++ 30.098.32156,5122106  88% 99% 87% 88%
2.7Ada 2005 GNAT #2 28.1811.47254,0244504  49% 72% 40% 82%
3.3Java 6 -server #2 47.5314.24762,5481602  80% 80% 95% 79%
5.3Java 6 -server 77.0322.84759,5361330  81% 81% 92% 82%
8.0C# Mono #3 107.3834.34479,8601404  87% 76% 69% 79%
9.2Scala #4 120.6139.80608,3401287  78% 75% 75% 74%
12Haskell GHC #3 112.5152.02407,9162749  47% 38% 71% 37%
13GNU gcc #2 53.9653.96802,9281141  0% 0% 0% 100%
14Pascal Free Pascal #2 62.4262.42127,7802383  0% 0% 0% 100%
15Lua LuaJIT #2 65.8765.87601,104613  0% 0% 100% 0%
15Lua LuaJIT 65.9765.98569,900601  70% 0% 0% 30%
21Perl 281.5788.722,774,904648  78% 73% 88% 83%
22Clean 92.8792.871,573,4321511  0% 100% 0% 0%
24C# Mono 104.84104.13472,0121420  100% 0% 1% 0%
32Fortran Intel 137.67137.66205,6602238  0% 0% 0% 100%
33Python CPython #6 6 min144.14439,968520  56% 88% 50% 96%
34PHP #3 8 min144.96247,9001268  96% 75% 85% 96%
34GNU gcc 143.17146.39134,1081340  1% 98% 0% 0%
35Lisp SBCL #3 150.84150.85392,5521284  100% 0% 0% 0%
36Python CPython #5 7 min157.21439,968557  77% 54% 93% 76%
37Erlang HiPE #3 7 min160.31558,128932  82% 62% 62% 77%
40Erlang HiPE 7 min174.562,204,632930  50% 80% 67% 61%
41C# Mono #2 176.16175.53597,9961012  0% 87% 13% 0%
47Python 3 #4 10 min204.52842,860577  77% 54% 94% 72%
50Lua 216.59216.58619,440601  100% 0% 0% 0%
52Lua #2 221.91223.26670,844613  1% 1% 98% 1%
60Perl #2 253.06256.79709,264359  99% 1% 0% 0%
60Haskell GHC #2 5 min258.562,739,2521767  23% 30% 47% 32%
63Go 6g 8g 266.92270.49391,788874  96% 9% 6% 2%
65Python 3 #2 10 min279.00842,864563  31% 32% 66% 93%
69Java 6 -Xint #2 17 min297.28299,1961602  85% 86% 86% 100%
72Scheme PLT 5 min5 min1,294,924623  2% 3% 2% 93%
81JavaScript V8 #3 5 min5 min332,956390  0% 100% 0% 0%
90JavaScript V8 6 min6 min332,884423  1% 1% 1% 98%
94Lisp SBCL 6 min6 min379,584847  2% 93% 3% 2%
103Java 6 -Xint 27 min7 min685,0721330  93% 93% 93% 95%
118Ruby JRuby #2 8 min8 min423,736420  38% 61% 2% 2%
122PHP #2 8 min8 min247,900914  0% 0% 0% 100%
127JavaScript TraceMonkey 9 min9 min659,444423  2% 97% 0% 0%
130Python CPython 9 min9 min439,248475  0% 0% 99% 0%
165Python 3 11 min11 min840,244487  4% 96% 0% 0%
168JavaScript TraceMonkey #3 12 min12 min427,744390  0% 100% 0% 0%
184Ruby 1.9 #2 13 min13 min163,236420  1% 99% 0% 1%
196Ruby MRI #2 14 min14 min147,980420  0% 0% 0% 100%
ATS Make Error1336
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.903.1541,4683416
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