Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

Language Shootout does not use Mono configured for HPC (--llvm, -O=unsafe).

It will also likely do poorly, because LLVM is slow to startup, but the resulting code is nothing short of God's own fine tuned code.

Alternatively, you can pre-compile the code with AOT:

mono --aot --llvm -O=unsafe sample.exe

But AOT code requires the sacrifice of a register to the gods of position independent code. Kind of the same perf hit you get from gcc -fPIC foo.c



Here's the command line for the spectral-norm C# programs shown on the benchmarks game website:

/usr/local/src/mono-2.11.4/bin/mono --gc=sgen --llvm spectralnorm.csharp-2.csharp_run 5500

As you can see --llvm is used.

(Since June 27, 2012)


Lovely!

This sample shows the startup cost of LLVM. It is not ideal for short-running tasks, as just JITing this code with LLVM increases the overhead for this test by 0.42 seconds on my machine (iMac, 2010).

Might be worth running this for a longer period of time, they will basically converge.

LLVM is great for HPC, when this startup cost is not a problem.


Sadly not lovely, because when I installed Mono 2.11.4 a couple of weeks ago, I forgot about "Compiling with stock LLVM is not supported, please use the Mono LLVM repo..."; and I guess when --llvm is used without LLVM being enabled, Mono does not give a warning message.

The Mono 3.0.0 measurements are made with LLVM enabled.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: