<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div><div><div>On Aug 27, 2011, at 2:15 PM, Jonathan Shore wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div><br></div><div>My machine is an old 2006 Mac Pro 1,1 &nbsp;2 x Xeon 5130 (64 bit) running OSX lion. &nbsp; Here are the respective versions of mono:</div><div><br></div><div><b>Mono on OSX:</b></div><div><b><br></b></div><div><div>Mono JIT compiler version 2.10.4 (tarball Mon Aug &nbsp;8 22:03:39 EDT 2011)</div><div>Copyright (C) 2002-2011 Novell, Inc, Xamarin, Inc and Contributors. <a href="http://www.mono-project.com/">www.mono-project.com</a></div><div><span class="Apple-tab-span" style="white-space:pre">        </span>TLS: &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="Apple-tab-span" style="white-space:pre">        </span> normal</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>SIGSEGV: &nbsp; &nbsp; &nbsp; normal</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>Notification: &nbsp;<span class="Apple-tab-span" style="white-space:pre">        </span>kqueue</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>Architecture: &nbsp;x86</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>Disabled: &nbsp; &nbsp; <span class="Apple-tab-span" style="white-space:pre">        </span>&nbsp;none</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>Misc: &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="Apple-tab-span" style="white-space:pre">        </span>debugger softdebug&nbsp;</div><div><span class="Apple-tab-span" style="white-space:pre">        </span>LLVM: &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<span class="Apple-tab-span" style="white-space:pre">        </span>yes(2.9svn-mono)</div><div><span class="Apple-tab-span" style="white-space: pre; ">        </span>GC: &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="Apple-tab-span" style="white-space:pre">        </span>&nbsp;Included Boehm (with typed GC)</div><div><br></div><div><br></div><div><b>Mono on Ubuntu 11.04</b>&nbsp;(running in VMWare VM on same machine):</div><div><br></div><div><b><div style="background-color: transparent; font-weight: normal; "><span id="internal-source-marker_0.664519535144791" style="color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">Mono JIT compiler version 2.6.7 (Debian 2.6.7-5ubuntu3)</span><br><span style="color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; ">Copyright (C) 2002-2010 Novell, Inc and Contributors. <a href="http://www.mono-project.com/">www.mono-project.com</a></span><br><span style="color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "><span class="Apple-tab-span" style="white-space: pre; ">        </span>TLS: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;__thread</span><br><span style="color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "><span class="Apple-tab-span" style="white-space: pre; ">        </span>GC: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Included Boehm (with typed GC and Parallel Mark)</span><br><span style="color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "><span class="Apple-tab-span" style="white-space: pre; ">        </span>SIGSEGV: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;altstack</span><br><span style="color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "><span class="Apple-tab-span" style="white-space: pre; ">        </span>Notifications: epoll</span><br><span style="color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "><span class="Apple-tab-span" style="white-space: pre; ">        </span>Architecture: &nbsp;amd64</span><br><span style="color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "><span class="Apple-tab-span" style="white-space: pre; ">        </span>Disabled: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;none</span></div></b></div><div style="font-weight: bold; "><br></div></div><div style="font-weight: bold; "><br></div><div>Here is the <b>&nbsp;Mac OSX &nbsp;mono 2.10.4 run:</b></div><div><b><br></b></div><div><b><div style="background-color: transparent; font-weight: normal; "><span id="internal-source-marker_0.664519535144791" style="color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "><span class="Apple-tab-span" style="white-space:pre">        </span>$ mono main.exe </span><br><span style="color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "><span class="Apple-tab-span" style="white-space:pre">        </span>Running benchmark</span><br></div></b><div style="background-color: transparent; "><span id="internal-source-marker_0.664519535144791" style="color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "><span class="Apple-tab-span" style="white-space:pre">        </span>struct sum: 5000089998356.48, time: 9.010549 secs</span><br><span style="color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "><span class="Apple-tab-span" style="white-space:pre">        </span>class sum: 5000089998356.48, time: 30.67357 secs</span></div></div><div><br></div><div><div>Here is the&nbsp;<b>&nbsp;Ubuntu 11.04 &nbsp;mono 2.6.7 run:</b></div><div><b><br></b></div><div><div style="background-color: transparent; font-weight: normal; "><span id="internal-source-marker_0.664519535144791" style="color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "><span class="Apple-tab-span" style="white-space:pre">        </span>$ mono main.exe </span><br><span style="color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "><span class="Apple-tab-span" style="white-space:pre">        </span>Running benchmark</span><br><span style="color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "><span class="Apple-tab-span" style="white-space:pre">        </span>struct sum: 5000089998356.48, time: 2.737732 secs</span><br><span style="color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "><span class="Apple-tab-span" style="white-space:pre">        </span>class sum: 5000089998356.48, time: 7.83984 secs</span></div><div style="font-weight: bold; "><span style="font-size: 11pt; font-family: Arial; color: rgb(0, 0, 0); background-color: transparent; font-weight: normal; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; "><br></span></div><div>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). &nbsp; &nbsp; The struct test is most likely not exercising the GC and the later is. &nbsp; I suspect given the consistent performance difference is *not* a GC issue, rather a difference in the JIT code generation. &nbsp; &nbsp;</div><div><br></div><div>Let me know if there is other information I can provide. &nbsp; Thanks. &nbsp;&nbsp;</div><div><br></div><div>Jonathan</div></div></div><br><div><div>On Aug 27, 2011, at 1:52 PM, Slide wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><br><br><div class="gmail_quote">On Sat, Aug 27, 2011 at 10:27 AM, Jonathan Shore <span dir="ltr">&lt;<a href="mailto:jonathan.shore@gmail.com">jonathan.shore@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<div style="word-wrap:break-word"><div>Hi,</div><div><br></div><div>I was doing some benchmarks of struct vs class based creation (I have an application that will generate millions of small objects). &nbsp; I was doing the tests in a ubuntu 11.4 VM on my mac pro and found the following:</div>
<div><br></div><div><span style="white-space:pre-wrap">        </span>mono&nbsp;<b>2.6.7 was 4x faster</b> on my linux VM <b>than 2.10.4 </b>running on OSX (same machine)</div><div><br></div><div>I don't know whether this may be because of one of the following:</div>
<div><br></div><div>- performance in 2.10.4 regressed vs 2.6.7</div><div>- mono JIT implementation for OSX has a completely different JiT codebase and does not perform</div><div>- difference in GC (only relevant for second part of the test)</div>
<div><br></div><div>Note that I tried this with separate compilations with mcs -optimize+ &nbsp;on both environments as well as running the same exe on both.</div><div><br></div><div>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.</div>
<div><br></div><div>Can someone clue me in? &nbsp; I've included the simple test code with this posting.</div><div><br></div><div>Thanks</div><div><br></div><font color="#888888"><div>Jonathan</div><div><br></div><div></div>
</font></div></blockquote></div><div><br></div><div><br></div><div>Can you publish your benchmark numbers and for what machines you are running on?</div><div><br></div><div>slide</div><div><br></div>-- <br>slide-o-blog<br>
<a href="http://slide-o-blog.blogspot.com/">http://slide-o-blog.blogspot.com/</a></blockquote></div></div></blockquote><br></div></div><div>Hi Jonathan, Slide<div><br></div><div>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&nbsp;<a href="http://www.mono-project.com/Compiling_Mono_on_OSX">http://www.mono-project.com/Compiling_Mono_on_OSX</a>. Try benchmarking that.</div><div><br></div><div>óBojan</div></div></body></html>