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

Stifu stifu at free.fr
Sat Aug 27 17:20:45 EDT 2011


Follow-up:

Reminder, my results were:

Mono 2.6.3:
structs: just below 15 seconds
classes: just below 40 seconds

Mono 2.10.3:
structs: just above 19 seconds
classes: just above 40 seconds

And this is with Mono 2.8.1:
structs: just below 15 seconds
classes: just above 40 seconds

So structs are as fast in Mono 2.6 and 2.8 here, but classes are a tiny bit
slower in 2.8, the same as with Mono 2.10. Looking at my results only, you'd
think there were 2 regressions: classes got slower between 2.6 and 2.8, and
structs got slower between 2.8 and 2.10.


Jonathan Shore wrote:
> 
> I think all of these results point to a regression in performance between
> 2.10.x and 2.6.x.    I ran the 2.6.x version on OSX and found it to be
> faster than 2.10.x.  
> 
> I will run on mu core i7 linux box and see how that fairs.
> 
> On Aug 27, 2011, at 4:09 PM, Bojan Rajkovic wrote:
> 
>> Hi all,
>> 
>> Here's my results from 64-bit Mono master on OS X 10.7.1. The CPU is an
>> Intel Core i7 @ 2.0 GHz, with 8 GB of RAM backing it:
>> 
>> struct sum: 5000089998356.48, time: 1.593511 secs
>> class sum: 5000089998356.48, time: 14.413891 secs
>> 
>> Classes are almost twice as slow, which is somewhat odd.
>> 
>> —Bojan
>> 
>> On Aug 27, 2011, at 3:36 PM, Jonathan Shore wrote:
>> 
>>> Ok.  When you have a chance can you indicate your marks & CPU?   I
>>> expect a reasonably modern CPU to be 2 - 6x fast than my sluggish cpu.  
>>> Thanks.
>>> 
>>> 
>>> So for instance my mac X5130 rates at 12.7 CINT 2006  vs  28.6  
>>> 
>>> On Aug 27, 2011, at 2:57 PM, Slide wrote:
>>> 
>>>> I just ran on ubuntu 64bit with mono 2.10.1 and got better numbers than
>>>> your 2.6.7. I had to run somewhere quick but will publish the numbers
>>>> when I get back.
>>>> 
>>>> On Aug 27, 2011 11:16 AM, "Jonathan Shore"
>>>> <jonathan.shore at gmail.com> 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/
>>>> > 
>>> 
>>> _______________________________________________
>>> Mono-devel-list mailing list
>>> Mono-devel-list at lists.ximian.com
>>> http://lists.ximian.com/mailman/listinfo/mono-devel-list
>> 
> 
> 
> _______________________________________________
> Mono-devel-list mailing list
> Mono-devel-list at lists.ximian.com
> http://lists.ximian.com/mailman/listinfo/mono-devel-list
> 


--
View this message in context: http://mono.1490590.n4.nabble.com/substantial-performance-regression-between-2-10-and-2-6-or-impl-diff-tp3773349p3773688.html
Sent from the Mono - Dev mailing list archive at Nabble.com.


More information about the Mono-devel-list mailing list