On Thu, Oct 30, 2008 at 08:30:02AM -0000, Stephen Rowles wrote:
> > Things like the Hot Spot compiler in Java, which can re-optimise
> > byte code as the program is running depending on how its actually
> > being used can complicate things (ending up with Java performing
> > better than C in *some* circumstances).

That will never happen. Java can approach C's performance in some
circumstances, but Java /always/ carries an overhead. The JVM is simply
not designed to match C's speed. For example, Java arrays are always bounds-
checked.

The hot-spot compiler is not a tool for doing extra super-duper
optimisation of frequently used code but for saving time by avoiding
optimisations on infrequently used code. You can assume that a C compiler
always fully optimises everything.

> That's one of the problems with performance optimisation. You cannot
> optimise everything (for a large software project you never have time) so
> you have to work on the areas you think are important / used the most. Of
> course if you get the wrong areas, then it doesn't help ;).

This is true but it's a completely different type of optimisation, one
that cannot be done automatically. Compilers can fully perform
instruction-level optimisation, but they won't rewrite an O(n²) algorithm
to an O(n log n) algorithm, which is usually the kind of optimisation
programmers usually look for when they are coding.

The circumstances where Java will run faster than C are the latter type
of operation: JFC gives programmers a far better library than the STL,
meaning it's easier to write code with better asymptotic complexity in
Java.

Dan

-- 
Please post to: Hampshire@mailman.lug.org.uk
Web Interface: https://mailman.lug.org.uk/mailman/listinfo/hampshire
LUG URL: http://www.hantslug.org.uk
--------------------------------------------------------------

Reply via email to