How big is the measured performance difference?

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

 chameneos-redux benchmark N=6,000,000

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

Compare how much Memory the chameneos-redux 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.0GNU gcc #5 2.840.725802879  100% 97% 99% 100%
4.0C++ GNU g++ #5 11.332.881,1681994  99% 99% 100% 97%
4.8C++ GNU g++ #4 12.333.481,1601800  76% 72% 100% 100%
6.4Haskell GHC #2 8.404.592,392832  0% 99% 0% 84%
6.7C++ GNU g++ #3 16.554.831,1641845  69% 65% 100% 100%
8.9Haskell GHC 6.446.441,816789  0% 0% 100% 0%
11Java 6 steady state #4 22.558.1615,6001464  53% 53% 78% 71%
11Java 6 -server #4 22.808.2412,5921377  50% 54% 84% 73%
12Java 6 -server #3 12.198.5523,3281756  25% 39% 32% 40%
12C++ GNU g++ 30.088.691,2801798  72% 66% 100% 99%
12Go 6g 8g #4 8.748.75700996  67% 0% 0% 32%
15Go 6g 8g #3 10.5510.55700983  50% 49% 0% 0%
18GNU gcc #2 41.8812.625601663  78% 72% 84% 79%
20Java 6 -Xint #4 43.5314.2710,5081377  62% 54% 90% 89%
20Java 6 -server #2 45.5314.4120,5081429  66% 65% 79% 73%
21Scala #2 48.1015.3621,6561171  63% 67% 83% 72%
22Java 6 steady state #2 50.8516.0519,1081513  66% 66% 80% 73%
28Go 6g 8g 20.3420.357121142  0% 0% 0% 100%
29C++ GNU g++ #2 46.9621.211,2641606  58% 56% 49% 53%
31Mozart/Oz 22.3122.314,2001090  0% 100% 0% 0%
41Java 6 -server 90.9729.6828,4521462  62% 61% 72% 74%
44Java 6 -Xint #2 90.1731.9016,2321429  58% 52% 68% 67%
46C# Mono 114.8632.826,5601409  78% 77% 85% 87%
85Smalltalk VisualWorks #2 60.8660.8512,7722515  0% 100% 0% 0%
114Java 6 -Xint 214.7881.8933,8161462  61% 54% 60% 58%
155Erlang HiPE 204.23111.336,268734  21% 44% 35% 55%
160Scala 111.48115.5554,5321234  24% 31% 19% 22%
182Ruby MRI 131.29131.281,956928  100% 0% 0% 0%
192GNU gcc 175.62138.206401769  30% 24% 38% 31%
207Ruby JRuby 5 min149.2657,096928  44% 43% 56% 56%
311Scheme PLT 223.70223.6926,144792  45% 57% 0% 0%
323OCaml #2 5 min232.501,5521286  38% 29% 39% 28%
330Python CPython #2 288.54237.533,020869  39% 33% 17% 27%
345Python 3 #2 5 min248.124,148866  30% 30% 31% 30%
347OCaml 6 min249.801,5521279  32% 39% 33% 34%
363Java 6 -Xint #3 6 min261.4516,2921756  28% 30% 44% 41%
363Go 6g 8g #2 9 min261.697201170  50% 48% 45% 47%
Ada 2005 GNAT Bad Output1615
Ruby 1.9 Failed928
missing programs
ATS No program
Clean No program
F# Mono No program
Fortran Intel No program
JavaScript TraceMonkey No program
JavaScript V8 No program
Lisaac No program
Lisp SBCL No program
Lua No program
Lua LuaJIT No program
Pascal Free Pascal No program
Perl No program
PHP No program

 chameneos-redux benchmark : Symmetrical thread rendezvous requests

ndiff program output N = 600 with this output file to check your program output has the correct format before contributing.

The text-part and spelled-out numbers in the program output should match the expected output exactly. Thread scheduling may cause small differences in the other numbers, so program output is checked with ndiff -fields 2-10

Each program should

The chameneos benchmark is an adaptation of "Chameneos, a Concurrency Game for Java, Ada and Others" 100KB pdf (which includes example implementations in Java, Ada and C).

Programs may use kernel threads, lightweight threads; but coroutines, cooperative threads and other programs with custom schedulers will be listed as interesting alternative implementations. Briefly say what concurrency technique is used in the program header comment.

Revised BSD license