From: Andrew Lentvorski <[EMAIL PROTECTED]>
JIT compilers do two primary things:
1) compile JVM bytecodes down to native assembly
This doesn't gain you much over normal compilers. However, it is nice in
that the system/os/microprocessor specific idiocies are encapsulated.
It actually tends to be a loss- you're now going through 2 levels of
compilation, which may destroy optimizations available at the original
level, and takes away almost all ability of the developer to actually
optimize (asside from the high level optimization of picking the best
algorithm).
2) make runtime choices for optimizations
This can be huge. There are certain classes of optimizations that use
information only available at runtime. The big one is being able to
optimize across library boundaries. There are some smaller ones like
branch prediction and loop unrolling which can be much more aggressive if
there is runtime information available. These optimizations are especially
important when you start running on machines which don't have the heavy
duty out-of-order execution and branch prediction engines of the big
microprocessors.
THey talk about this being huge. The reality is that the only tests which
have shown any real advantage to them have been cooked. You spend more
processor time analyzing than you gain.
Gabe
--
[email protected]
http://www.kernel-panic.org/cgi-bin/mailman/listinfo/kplug-lpsg