473,396 Members | 1,676 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,396 software developers and data experts.

.NET vs Mono performance


I've just done some quick performance tests using various medium-sized
benchmarks and it appears that .NET is vastly faster than Mono. Can anyone
confirm this?

For example, my ray tracer benchmark from the shootout (in C#):

32-bit .NET: 13s
64-bit Mono: 123s

I was expecting Mono to be maybe 2x slower but 10x is very disappointing.

--
Dr Jon D Harrop, Flying Frog Consultancy
OCaml for Scientists
http://www.ffconsultancy.com/product...ex.html?usenet
Apr 9 '07 #1
7 7426
Jon Harrop <jo*@ffconsultancy.comwrote:
>
I've just done some quick performance tests using various medium-sized
benchmarks and it appears that .NET is vastly faster than Mono. Can anyone
confirm this?

For example, my ray tracer benchmark from the shootout (in C#):

32-bit .NET: 13s
64-bit Mono: 123s

I was expecting Mono to be maybe 2x slower but 10x is very disappointing.
I think it would be worth doing performance tests on more similar
equipment - tests on different architectures aren't very easily
comparable.

Also bear in mind that your bottleneck may be something that the Mono
JIT does particularly badly - it's effectively impossible to get a
"general" benchmark, as every application will have slightly different
bottlenecks.

Having said all that, I agree it's disappointing.

--
Jon Skeet - <sk***@pobox.com>
http://www.pobox.com/~skeet Blog: http://www.msmvps.com/jon.skeet
If replying to the group, please do not mail me too
Apr 9 '07 #2
Jon Skeet [C# MVP] wrote:
I think it would be worth doing performance tests on more similar
equipment - tests on different architectures aren't very easily
comparable.
These are identical machines:

2x 4400+ AMD64 (2.2GHz)
2Gb RAM
GF7900GT

The only difference is the software (64-bit Linux, 32-bit Windows). If
anything I'd expect 64-bit to give the advantage to Mono.
Also bear in mind that your bottleneck may be something that the Mono
JIT does particularly badly - it's effectively impossible to get a
"general" benchmark, as every application will have slightly different
bottlenecks.
Yes. Any idea what the problem might be? Perhaps Mono is swamped by 64-bit
pointers, but that would only explain another factor of 2.

--
Dr Jon D Harrop, Flying Frog Consultancy
OCaml for Scientists
http://www.ffconsultancy.com/product...ex.html?usenet
Apr 9 '07 #3
Jon Harrop wrote:
The only difference is the software (64-bit Linux, 32-bit Windows). If
anything I'd expect 64-bit to give the advantage to Mono.
I'd actually expect the opposite, due to reduced effective cache size
because of larger pointers and less maturity in compilation experience &
effort.

-- Barry

--
http://barrkel.blogspot.com/
Apr 9 '07 #4
Barry Kelly wrote:
>The only difference is the software (64-bit Linux, 32-bit Windows). If
anything I'd expect 64-bit to give the advantage to Mono.

I'd actually expect the opposite, due to reduced effective cache size
because of larger pointers and less maturity in compilation experience &
effort.
I've only ever seen one benchmark get worse going from 32- to 64-bit and it
was an allocation intensive tree-based algorithm. In general, 64-bit is
much faster, particularly for FP intensive work like this ray tracer.

--
Dr Jon D Harrop, Flying Frog Consultancy
OCaml for Scientists
http://www.ffconsultancy.com/product...ex.html?usenet
Apr 9 '07 #5
Jon Harrop wrote:
Barry Kelly wrote:
The only difference is the software (64-bit Linux, 32-bit Windows). If
anything I'd expect 64-bit to give the advantage to Mono.
I'd actually expect the opposite, due to reduced effective cache size
because of larger pointers and less maturity in compilation experience &
effort.

I've only ever seen one benchmark get worse going from 32- to 64-bit
Specifically using the Mono JIT compiler? Not all compilers are created
equal by dint of targeting the same architecture, alas.
and it
was an allocation intensive tree-based algorithm. In general, 64-bit is
much faster, particularly for FP intensive work like this ray tracer.
I think you need to isolate your variables and test Mono on Win32.

FP on x64 is completely different from x86 - specifically x87 isn't
there, there's no FP stack etc. FP codegen needs a rewrite for x64.
Perhaps it hasn't been paid due attention yet for Mono/x64?

-- Barry

--
http://barrkel.blogspot.com/
Apr 9 '07 #6
Why not test windows mono against .net on same machine and OS? At least
that way, you eliminate the 32/64 issue and the OS issue and can get closer
to apples-to-apples tests on library perf.

--
William Stacey [C# MVP]
"Jon Harrop" <jo*@ffconsultancy.comwrote in message
news:46**********************@ptn-nntp-reader02.plus.net...
|
| I've just done some quick performance tests using various medium-sized
| benchmarks and it appears that .NET is vastly faster than Mono. Can anyone
| confirm this?
|
| For example, my ray tracer benchmark from the shootout (in C#):
|
| 32-bit .NET: 13s
| 64-bit Mono: 123s
|
| I was expecting Mono to be maybe 2x slower but 10x is very disappointing.
|
| --
| Dr Jon D Harrop, Flying Frog Consultancy
| OCaml for Scientists
|
http://www.ffconsultancy.com/product...ex.html?usenet
Apr 9 '07 #7
Barry Kelly wrote:
>I've only ever seen one benchmark get worse going from 32- to 64-bit

Specifically using the Mono JIT compiler?
No, that was OCaml (which is more pointer-intensive than most languages).
Not all compilers are created equal by dint of targeting the same
architecture, alas.
True.
I think you need to isolate your variables and test Mono on Win32.

FP on x64 is completely different from x86 - specifically x87 isn't
there, there's no FP stack etc. FP codegen needs a rewrite for x64.
Perhaps it hasn't been paid due attention yet for Mono/x64?
Yes, that's a very good point. I hadn't thought of it like that. Actually, I
didn't even know you could get Mono for Windows.

However, I'm really interested in .NET on Windows vs whatever on Linux and,
currently, I think that "whatever" has to be Mono.

--
Dr Jon D Harrop, Flying Frog Consultancy
OCaml for Scientists
http://www.ffconsultancy.com/product...ex.html?usenet
Apr 10 '07 #8

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

3
by: Raseliarison nirinA | last post by:
hi all, i found an unanswered question at http://www.faqts.com/knowledge_base/index.phtml/fid/538 with possible response below. i've tried to send it at faqt.python but can't figure out how to...
8
by: Everything Jute ! | last post by:
Programmers everyday are making a tragic error by not learning mono. Mono is te standard .net implementation for Windos and Linux. Learning mono is the key to writing fast, OOP, cross platform...
11
by: Tony Baker | last post by:
In order for my company to go ahead and use .Net and C# (over java), I need to know how to install and run a C# ASP.Net application not only on Windows, but on Linux. I'm a Windows developer,...
5
by: fliversen | last post by:
Hello, does anyone have successfull experience with mono on Windows. I have download mono-1.0.1-gtksharp-1.0-win32-0.5.exe But to compile und run programs whitch use Gtk# is not possible:...
0
by: John Bailo | last post by:
http://www.onlamp.com/pub/wlg/7468 "Mono Live was released on May 24, 2005. Although there are several Live Linux CDs with Mono, they are all based on Knoppix and use KDE as the default Linux...
0
by: Udo Nesshoever | last post by:
Hi there! Does anyone know a resource where to find statements about reliability, stability and performance about a WebService running under Mono on a linux machine? Plan is to write a...
7
by: sanxiyn | last post by:
Skip wrote: For those of us who have never used IronPython or Mono, is there a quick start document laying about somewhere? It wasn't clear to me where to even look. Okay, here we go: 1....
6
by: Twig | last post by:
Hi, Can I use strictly for C# development without missing anything from MS? Twig
2
by: flagos | last post by:
Hi to all! Any of you know if it's possible to use the Cairo graphics library in a WIN32 c# application? I know there is a binding made for Mono but my app will run on win32 so obviously I wont...
0
by: Charles Arthur | last post by:
How do i turn on java script on a villaon, callus and itel keypad mobile phone
0
by: ryjfgjl | last post by:
In our work, we often receive Excel tables with data in the same format. If we want to analyze these data, it can be difficult to analyze them because the data is spread across multiple Excel files...
0
by: emmanuelkatto | last post by:
Hi All, I am Emmanuel katto from Uganda. I want to ask what challenges you've faced while migrating a website to cloud. Please let me know. Thanks! Emmanuel
0
by: Hystou | last post by:
There are some requirements for setting up RAID: 1. The motherboard and BIOS support RAID configuration. 2. The motherboard has 2 or more available SATA protocol SSD/HDD slots (including MSATA, M.2...
0
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However,...
0
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers,...
0
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven...
0
by: Hystou | last post by:
Overview: Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows...
0
agi2029
by: agi2029 | last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing,...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.