473,323 Members | 1,622 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,323 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 7421
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: DolphinDB | last post by:
Tired of spending countless mintues downsampling your data? Look no further! In this article, you’ll learn how to efficiently downsample 6.48 billion high-frequency records to 61 million...
0
by: ryjfgjl | last post by:
ExcelToDatabase: batch import excel into database automatically...
1
isladogs
by: isladogs | last post by:
The next Access Europe meeting will be on Wednesday 6 Mar 2024 starting at 18:00 UK time (6PM UTC) and finishing at about 19:15 (7.15PM). In this month's session, we are pleased to welcome back...
0
by: Vimpel783 | last post by:
Hello! Guys, I found this code on the Internet, but I need to modify it a little. It works well, the problem is this: Data is sent from only one cell, in this case B5, but it is necessary that data...
0
by: jfyes | last post by:
As a hardware engineer, after seeing that CEIWEI recently released a new tool for Modbus RTU Over TCP/UDP filtering and monitoring, I actively went to its official website to take a look. It turned...
1
by: PapaRatzi | last post by:
Hello, I am teaching myself MS Access forms design and Visual Basic. I've created a table to capture a list of Top 30 singles and forms to capture new entries. The final step is a form (unbound)...
1
by: Shællîpôpï 09 | last post by:
If u are using a keypad phone, how do u turn on JavaScript, to access features like WhatsApp, Facebook, Instagram....
0
by: Faith0G | last post by:
I am starting a new it consulting business and it's been a while since I setup a new website. Is wordpress still the best web based software for hosting a 5 page website? The webpages will be...
0
isladogs
by: isladogs | last post by:
The next Access Europe User Group meeting will be on Wednesday 3 Apr 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM). In this session, we are pleased to welcome former...

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.