Elmar Haneke:>You should use an profiler to investigate where the difference
arises.I don't have experiencies with that. Is there any good tools for that?
At least you should make sure that both runs are using the same Gtk/Cairo and
Gtk# libraries.I looked again at modules list. Here it is:* Run in Monodevelop
in debug mode with Default fw selected (.Net fw 4.0):Loaded Module
'C:\Windows\Microsoft.Net\assembly\GAC_32\mscorlib\v4.0_4.0.0.0__b77a5c561934e089\mscorlib.dll'
Started Thread 2280
Loaded Module
'E:\Dev\Projects\Linux\Cairo\PerfDrawing3\PerfDrawing3\bin\Debug\PerfDrawing3.exe'
Loaded Module
'C:\Windows\assembly\GAC\gtk-sharp\2.12.0.0__35e10195dab3c99f\gtk-sharp.dll'
Loaded Module
'C:\Windows\assembly\GAC\glib-sharp\2.12.0.0__35e10195dab3c99f\glib-sharp.dll'
Loaded Module
'C:\Windows\assembly\GAC\atk-sharp\2.12.0.0__35e10195dab3c99f\atk-sharp.dll'
Loaded Module
'C:\Windows\assembly\GAC\gdk-sharp\2.12.0.0__35e10195dab3c99f\gdk-sharp.dll'
Loaded Module
'C:\Windows\assembly\GAC_MSIL\Mono.Posix\2.0.0.0__0738eb9f132ed756\Mono.Posix.dll'
Loaded Module
'C:\Windows\Microsoft.Net\assembly\GAC_MSIL\System\v4.0_4.0.0.0__b77a5c561934e089\System.dll'
Started Thread 3848
Loaded Module
'C:\Windows\assembly\GAC_MSIL\Mono.Cairo\2.0.0.0__0738eb9f132ed756\Mono.Cairo.dll'
* Run in Monodevelop in debug mode with Monodevelop fw selected (Mono 2.10.8):
Loaded assembly:
E:\Dev\Projects\Linux\Cairo\PerfDrawing3\PerfDrawing3\bin\Debug\PerfDrawing3.exe
Loaded assembly: C:\Program Files
(x86)\Mono-2.10.8\lib\mono\gac\gtk-sharp\2.12.0.0__35e10195dab3c99f\gtk-sharp.dll
[External]
Loaded assembly: C:\Program Files
(x86)\Mono-2.10.8\lib\mono\gac\glib-sharp\2.12.0.0__35e10195dab3c99f\glib-sharp.dll
[External]
Loaded assembly: C:\Program Files
(x86)\Mono-2.10.8\lib\mono\gac\atk-sharp\2.12.0.0__35e10195dab3c99f\atk-sharp.dll
[External]
Loaded assembly: C:\Program Files
(x86)\Mono-2.10.8\lib\mono\gac\System\4.0.0.0__b77a5c561934e089\System.dll
[External]
Loaded assembly: C:\Program Files
(x86)\Mono-2.10.8\lib\mono\gac\Mono.Cairo\4.0.0.0__0738eb9f132ed756\Mono.Cairo.dll
[External]
Loaded assembly: C:\Program Files
(x86)\Mono-2.10.8\lib\mono\gac\gdk-sharp\2.12.0.0__35e10195dab3c99f\gdk-sharp.dll
[External]
Loaded assembly: C:\Program Files
(x86)\Mono-2.10.8\lib\mono\gac\Mono.Posix\4.0.0.0__0738eb9f132ed756\Mono.Posix.dll
[External]There is difference in both Cairo libs.Here are the libs from .Net fw
gac:>gacutil /l Mono.Cairo
Microsoft (R) .NET Global Assembly Cache Utility. Version 3.5.30729.1
Copyright (c) Microsoft Corporation. All rights reserved.
The Global Assembly Cache contains the following assemblies:
Mono.Cairo, Version=2.0.0.0, Culture=neutral,
PublicKeyToken=0738eb9f132ed756,processorArchitecture=MSIL
Mono.Cairo, Version=1.0.5000.0, Culture=neutral,
PublicKeyToken=0738eb9f132ed756
Number of items = 2
And here are the libs from Mono gac:>C:\Program Files
(x86)\Mono-2.10.8\bin>gacutil /l Mono.Cairo
The following assemblies are installed into the GAC:
Mono.Cairo, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756
Mono.Cairo, Version=4.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756
Number of items = 2
As I know, it uses Mono.Cairo 2.0 when it is run on .Net Fw platform and
Mono.Cairo 4.0 on Mono platform.
It is also strange that .Net fw 4.0 loads assembly from .Net fw 2.0 gac.My referencies in the project file are the following:
I tried removing Mono.Cairo dll from referencies and adding it again from 'C:\Windows\assembly\GAC_MSIL\Mono.Cairo\2.0.0.0__0738eb9f132ed756\Mono.Cairo.dll', but I got 1 error in compilation process: public void Update()
{
lock (this)
{
using (Cairo.Context context = Gdk.CairoHelper.Create(GdkWindow)) { Is your
code doing a lot with floating-point values?Every point (10 000) has double x,y coordinates.
Lines are composed from 2 points and there is also some math for rotating with sin, cos
functions.> 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.Can it be somehow influenced e.g. by command line
parameter or it is "hardcoded"?Rodrigo Kumpera:
Is your benchmark of mono on windows?
yes, Win7
Did you profile your app to see what the bottlenecks are?
I'd like to, but how can I do that actually in monodevelop?> LLVM is not
supported on windows and it's not enabled by default due to the significant
overhead it imposes that makes it impractical for interactive applications. On
2.10, SGen is not enabled by default and it is not supported on windows.It is
really sad, that almost no optimalization is not supported on Win platform :-(
_______________________________________________
Mono-list maillist - [email protected]
http://lists.ximian.com/mailman/listinfo/mono-list