Java, C#, VM Performance and Benchmarks

Craig Black cblack at ara.com
Tue Mar 21 15:54:12 PST 2006


"Kevin Bealer" <Kevin_member at pathlink.com> wrote in message 
news:dvppn6$1ans$1 at digitaldaemon.com...
> In article <dvpmc3$15sk$1 at digitaldaemon.com>, Craig Black says...
>>
>>There are so many people that are fooled by benchmarks indicating that 
>>Java
>>performs as well as C++.  Don't be an idiot!  Yes, there are programs that
>>you can write in Java that will run as fast as the equivalent C++ 
>>programs.
>>These programs are typically small.  Notice that they do not use a lot of
>>object instantiation.  In other words, you don't see a lot of "new 
>>MyClass"
>>in these programs.  But try to write a 3D game engine in Java.  I've 
>>talked
>>with some of the best game programmers in the world and they say the same
>>thing:  Java is damn slow.
>>
>>-Craig
>
> I've talked to Java people who've said that Java is pretty fast, and the
> performance loss is not too big of a deal.  But if you talk about putting 
> 4
> integers in a class and then creating a container of those, they see that 
> as
> just a poor design, performance wise.
>
> In D you can do this with struct (similarly in C++), and it doesn't hurt
> performance at all.  In Java, I think most experienced people would unroll 
> the
> struct and use an array of int.
>
> In other words (if this anecdote is true in general), experienced Java 
> folk see
> performance coding as a matter of getting rid of abstractions (i.e. class
> definitions and the associated objects), because proliferating objects is
> expensive in Java.
>
> D (and C++) allow you to keep these abstractions at no runtime cost, but 
> the
> language is a bit more complex (or in the case of C++, much more) by 
> virtue of
> having the extra syntax to make it possible.
>
> Kevin

Abstraction is priority one when it comes to maintaining code, especially if 
you have a lot of it.  If when using Java, I have to give up abstraction in 
order to get performance, then my high performance Java code becomes less 
maintainable.  I would definitely rather have the abstraction without the 
performance hit.  D syntax is not much more difficult than Java.  Further, 
it has much more expressive power.  Thus, for high-performance coding, and 
for maintainability, D is the best choice.

-Craig 





More information about the Digitalmars-d mailing list