[Mono-dev] mono numerical performance

Konrad M. Kruczyński konrad.kruczynski at gmail.com
Sun Nov 20 11:38:10 EST 2011


I'd like to add that you may gain something on MS JIT compiler using 
for (int i = 0 ; i < x.Length ; i++)
instead of
for (int i = 0 ; i < len ; i++)

This may seem counter intuitive, however that's the scenario in which
JIT eliminates array bound checking for the x array (however not for the
second one) as arrays have constant length. I am not sure whether Mini
recognizes that. I'm pretty sure that Hotspot is much smarter here ;)

As Zoltan wrote in the bug comments, enabling LLVM improves the results
a lot. This is, I guess, due to much better register allocation in which
domain Mini isn't too good - and probably other optimizations like
better loop unrolling.

If I remember correctly, there once was a branch of LLVM with array
bounds check elimination, is it still developed?

I am also curious which code patterns enable ABC elimination in Mini.

On Sun, 2011-11-20 at 08:01 -0500, Jonathan Shore wrote:
> Here is a link to and entry in bugzilla with attached code.  I could
> not send to the list:
> http://bugzilla.xamarin.com/show_bug.cgi?id=2098


More information about the Mono-devel-list mailing list