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

Reply via email to