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.
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