[Mono-dev] substantial performance regression between 2.10 and 2.6 or impl diff?

Bojan Rajkovic bojan at canesystems.com
Sat Aug 27 14:20:29 EDT 2011


On Aug 27, 2011, at 2:15 PM, Jonathan Shore wrote:

> 
> My machine is an old 2006 Mac Pro 1,1  2 x Xeon 5130 (64 bit) running OSX lion.   Here are the respective versions of mono:
> 
> Mono on OSX:
> 
> Mono JIT compiler version 2.10.4 (tarball Mon Aug  8 22:03:39 EDT 2011)
> Copyright (C) 2002-2011 Novell, Inc, Xamarin, Inc and Contributors. www.mono-project.com
> 	TLS:          	 normal
> 	SIGSEGV:       normal
> 	Notification:  	kqueue
> 	Architecture:  x86
> 	Disabled:     	 none
> 	Misc:          	debugger softdebug 
> 	LLVM:          	yes(2.9svn-mono)
> 	GC:           	 Included Boehm (with typed GC)
> 
> 
> Mono on Ubuntu 11.04 (running in VMWare VM on same machine):
> 
> Mono JIT compiler version 2.6.7 (Debian 2.6.7-5ubuntu3)
> Copyright (C) 2002-2010 Novell, Inc and Contributors. www.mono-project.com
> 	TLS:           __thread
> 	GC:            Included Boehm (with typed GC and Parallel Mark)
> 	SIGSEGV:       altstack
> 	Notifications: epoll
> 	Architecture:  amd64
> 	Disabled:      none
> 
> 
> Here is the  Mac OSX  mono 2.10.4 run:
> 
> 	$ mono main.exe 
> 	Running benchmark
> 	struct sum: 5000089998356.48, time: 9.010549 secs
> 	class sum: 5000089998356.48, time: 30.67357 secs
> 
> Here is the  Ubuntu 11.04  mono 2.6.7 run:
> 
> 	$ mono main.exe 
> 	Running benchmark
> 	struct sum: 5000089998356.48, time: 2.737732 secs
> 	class sum: 5000089998356.48, time: 7.83984 secs
> 
> Note that the running time for mono 2.6.7 is ~4x faster than mono 2.10.4 on the same box (and the linux run has the disadvantage of running on a VM).     The struct test is most likely not exercising the GC and the later is.   I suspect given the consistent performance difference is *not* a GC issue, rather a difference in the JIT code generation.    
> 
> Let me know if there is other information I can provide.   Thanks.   
> 
> Jonathan
> 
> On Aug 27, 2011, at 1:52 PM, Slide wrote:
> 
>> 
>> 
>> On Sat, Aug 27, 2011 at 10:27 AM, Jonathan Shore <jonathan.shore at gmail.com> wrote:
>> Hi,
>> 
>> I was doing some benchmarks of struct vs class based creation (I have an application that will generate millions of small objects).   I was doing the tests in a ubuntu 11.4 VM on my mac pro and found the following:
>> 
>> 	mono 2.6.7 was 4x faster on my linux VM than 2.10.4 running on OSX (same machine)
>> 
>> I don't know whether this may be because of one of the following:
>> 
>> - performance in 2.10.4 regressed vs 2.6.7
>> - mono JIT implementation for OSX has a completely different JiT codebase and does not perform
>> - difference in GC (only relevant for second part of the test)
>> 
>> Note that I tried this with separate compilations with mcs -optimize+  on both environments as well as running the same exe on both.
>> 
>> I can live with slower performance on OSX, but want to make sure that linux and windows versions of mono 2.10.x have the performance of 2.6.7 or better.
>> 
>> Can someone clue me in?   I've included the simple test code with this posting.
>> 
>> Thanks
>> 
>> Jonathan
>> 
>> 
>> 
>> Can you publish your benchmark numbers and for what machines you are running on?
>> 
>> slide
>> 
>> -- 
>> slide-o-blog
>> http://slide-o-blog.blogspot.com/

Hi Jonathan, Slide

I suspect this is a difference between x86 and amd64 codegen. Mono on OS X is distributed as 32-bit only for now, though there is (somewhat-experimental) amd64/Darwin support in master. You can build it following the instructions at http://www.mono-project.com/Compiling_Mono_on_OSX. Try benchmarking that.

—Bojan
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.ximian.com/pipermail/mono-devel-list/attachments/20110827/8748fdd2/attachment.html 


More information about the Mono-devel-list mailing list