15 Sep 2009 ncm   » (Master)

There's this blog posting by one of the original Java Hotspot coders, Cliff Click Jr., talking about performance of Java compared to what he earnestly calls "C/C++". I posted a comment, and he censored it for its "highly insulting tone" and "blatant factual errors" (which he has not identified). No matter. You might not have seen it, there, but you can see it here:

Each posting or comment that uses the construction "C/C++" invalidates itself. C and C++ are different languages with very different performance characteristics. It used to be that scientists and engineers used Fortran for serious calculations because their Fortran programs and libraries ran much faster than C programs. Nowadays, serious work is done in C++ because it's notably faster than Fortran. This is not because Fortran got slower.

For similar reasons, we may also dispose of comparisons with C. A Java (or Lisp) program "as fast as C" or "faster than C" has achieved little. That this is seen, instead, as a major achievement is telling. "As fast as C" is a low bar. (Those of you convinced that C++ is just a preprocessor for C are sadly delusional; I'm sorry to be the one to break the news to you at this late date.)

Those of you promoting GC as a major, fundamental advantage over "malloc/free" or "new/delete" are also sadly misled. It's common for a competent C++ programmer to go for years without ever coding a call to free() or delete.

Those of you dismissing storage pools as "poor man's GC" are similarly misled, and have much to learn about locality and cache effects. Controlling your memory footprint can routinely result in 5x speed differences. Java, sadly, does not offer that kind of control.

There are lots of slow programs in every language. That might help you to feel better about yours, but it's pointless to compare one badly coded program to another. The meaningful comparisons are between well-written programs.

It's not surprising to find these sorts of misunderstandings promoted on a Java forum. People who are serious about performance aren't using Java, and people who are using Java are, perforce, not serious about performance. If you would like to be serious about performance, you will need to look elsewhere.

I'm obliged to concede that the above might seem a smidge inflammatory, but considering the context over there, it's really not inflammatory enough.

Latest blog entries     Older blog entries

New Advogato Features

New HTML Parser: The long-awaited libxml2 based HTML parser code is live. It needs further work but already handles most markup better than the original parser.

Keep up with the latest Advogato features by reading the Advogato status blog.

If you're a C programmer with some spare time, take a look at the mod_virgule project page and help us with one of the tasks on the ToDo list!