[Mono-list] Mono VM speed

Justin Holewinski justin.holewinski at gmail.com
Mon Apr 16 04:15:17 UTC 2012


On Sun, Apr 15, 2012 at 9:56 AM, <pinggi at centrum.cz> wrote:

> Hi, I have 'problem' with mono engine speed. I developed and compiled app
> on Win7. It uses GTK# + Cairo to draw animation of 5 000 rotating lines in
> full screen. I compiled it under Monodevelop with Default Runtime /
> Release|x86 profile.
> Now if I run it from command line like this:
>
> >PerfDrawing3.exe
>
> It runs under .Net fw 4.0 and I get 26 FPS (one frame in 38 ms).
> If I run it under Mono like this:
>
> >mono PerfDrawing3.exe
>
> I get 10 FPS (97ms per frame) => 2,5x slower!
>
> I tried some optimization mono parameters like:
>
> mono --optimize=all PerfDrawing3.exe
>
> mono --optimize=simd PerfDrawing3.exe
>
> mono --optimize=sse2 PerfDrawing3.exe
>
> mono --llvm PerfDrawing3.exe
>
> mono --gc=sgen PerfDrawing3.exe
>
> ...but still the same result. I tried to aot it, but without success too.
> Probably it is possible only on Linux platform :-(
>

Is your code doing a lot with floating-point values?

If so, it could be a floating-point precision issue.  I've found that the
Mono JIT emits double-precision instructions (addsd, mulsd, etc.) for
single-precision types, while the Microsoft compiler uses the
single-precision versions (addss, mulss, etc.).  This can easily cause such
a slowdown.


>
> >mono --aot=full -O=all PerfDrawing3.exe
> Mono Ahead of Time compiler - compiling assembly PerfDrawing3.exe
> Code: 23432 Info: 461 Ex Info: 1466 Unwind Info: 103 Class Info: 1041 PLT:
> 167 G
> OT Info: 1756 GOT: 936 Offsets: 1330
> Executing the native assembler: as   -o \AppData\Local\Temp\mono_
> aot_a06524.o \AppData\Local\Temp\mono_aot_a06524
> 'as' is not recognized as an internal or external command,
> operable program or batch file.
> AOT of image PerfDrawing3.exe failed.
>
> Here is my version string:
>
> >mono -V
>  Mono JIT compiler version 2.10.8 (tarball)
>  Copyright (C) 2002-2011 Novell, Inc, Xamarin, Inc and Contributors.
> www.mono-pro
>  ject.com
>          TLS:           normal
>          SIGSEGV:       normal
>          Notification:  Thread + polling
>          Architecture:  x86
>          Disabled:      none
>          Misc:          softdebug
>          LLVM:          supported, not enabled.
>          GC:            Included Boehm (with typed GC and Parallel Mark)
>
> I quite surprised that llvm is "not enabled" and GC is "Boehm". It is by
> default I hope and can be changed by --llvm and --gc switches.
>
> Well, is there anything what I missed or Mono 2.10.8 @ Win7 is 2,5x slower
> than .Net Fw 4.0 VM?
> _______________________________________________
> Mono-list maillist  -  Mono-list at lists.ximian.com
> http://lists.ximian.com/mailman/listinfo/mono-list
>



-- 

Thanks,

Justin Holewinski
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.ximian.com/pipermail/mono-list/attachments/20120415/272ba099/attachment-0001.html>


More information about the Mono-list mailing list