After the withdrawal of LuaJIT, PyPy and a few other great implementations from the Compute Language Benchmarks Game, we are virtually left with no benchmarks that compare the performance between languages and between implementations of the same language. Without both types of comparisons, we will be unable to tell which programming language has the best performance in practice, because languages and implementations are closely related.

In the end, I decide to benchmark programming languages by myself. Although right now the benchmark is very primitive and limited, in my opinion it is not very misleading and thus better than nothing.

In the current benchmark, I am evaluating the speed of multiplying two 1000×1000 matrices using the standard method (there are theoretically faster algorithms). The benchmark covers 11 programming languages including C (icc, gcc and clang), C# (mono), D (gdc), Go (6g), Java, Javascript (V8, JaegarMonkey and Rhino), Lua (Lua and LuaJIT), Perl, Python (CPython2/3, PyPy, Jython and IronPython@mono), Ruby (Ruby, JRuby, Rubinius and IronRuby@mono) and R.

Note that this is the first time I write C#, Go and Ruby and I am very unfamiliar with D, R, Python and Java. It is quite likely that I did something silly even though matrix multiplication sounds easy. Please feel free to correct me. Thank you.

Results: http://attractivechaos.github.com/plb/

Source code: https://github.com/attractivechaos/plb/

EDIT: Results are also in this post.