[Mono-list] Mono C# versus Java 6 -server performance
hulme at ebi.ac.uk
Thu Nov 29 09:50:22 EST 2007
> Then there's the memory usage figures, where Mono is usually smaller.
> Not significantly smaller -- 5x 1.xx times smaller, and 9x 2.xx times
> smaller -- but memory use is important.
I agree memory use is generally important, and C# Mono seems to do
better in this regard. In our situation it isn't the key issue however,
I care more about CPU time.
> So the speed is fairly comparable (except for pidigits and regex), while
> requiring less memory. This isn't a Java blowout; this is a tie.
Here are the results:
regex-dna, Java 7.9x faster
pidigits, Java 6.1x faster
sum-file, Java 2.5x faster
mandlebrot, Java 2.2x faster
spectral-norm, Java 1.9x faster
startup, C# Mono 1.9x faster
fannkuch, Java 1.6x faster
n-body, Java 1.8x faster
binary-trees, Java 1.3x faster
k-nucleotide, Java 1.3x faster
thread-ring, Java 1.2x faster
fasta, Java 1.2x faster
recursive, Java 1.1x faster
nsieve-bits, Java 1.1x faster
nsieve, Equal performance
partial-sums, C# Mono 1.7x faster
reverse-complement, C# Mono 1.2x faster
Even if you cut off the two top results Java is generally faster. Is it
significantly faster in those cases? We could argue about what is
significant and what matters (personally I do most of my work in Ruby,
so 'speed' usually doesn't matter to me), but when we're wondering which
language (out of Java and C#) to use for the software we write here
(that is CPU bound) 30% slower is significant.
If the answer is "Well Java 'cheats' by having special native libraries
for what is done in these benchmarks" that's an understandable answer,
or if the answer is "The C# implementation for benchmark foo is not very
good, we could make a better one", that'd also be reasonable.
Take Mandelbrot for example. From my limited check of the .java and .cs
implementations they look pretty comparable, so why is the Java version
over twice as fast?
> In which case performance isn't the issue. The issue is frameworks and
> experience. C# may be a nicer language, but if your team is made up
> primarily of Java developers then you should probably stick with Java.
> Similarly, if Java has an available framework for your problem domain
> that .NET doesn't have, then Java may be a better choice.
No, performance is an issue. Java and C# are reasonably comparable
languages. Good developers can write for either. I am personally of the
opinion that C# is slightly nicer (maybe more than slightly), and I
don't see why an equivalent program in C# should be any slower than the
Java equivalent. Indeed everything I read about CIL (admittedly from the
Microsoft Press books) suggests it should be easier to create faster
execution from CIL compared to Java byte code.
I did say something along the lines of "C makes it easy to shoot
yourself in the foot; C++ makes it harder, but when you do, it blows
your whole leg off."
More information about the Mono-list