On 7/27/06, Stefano Mazzocchi <[EMAIL PROTECTED]> wrote:
For server side software, the warm-up time is not a big deal, but for client side software, it's a huge deal if Eclipse (or your, ehm, firefox extension written in java <grin>) starts up in 0.5 seconds instead of 5.
AFAIK the Eclipse (or client-app) startup is affected by class loading/verification mostly. The time percent of managed code execution or compilation is low. SUN starts Eclipse very fast but it has interpreter! To get the real numbers: run any PMU profiling tool: e.g. VTune, and check the time distribution between different shared libraries. The time for 'jitrino' library is the time of compilation. The time of 'gc' library is GC overhead. The time for 'vmcore' library is VM time that for Eclipse startup is the time distributed between class loading/verification code and helper method calls from managed (Java) code. The time for 'unknown' library is the time of managed code execution. If you can drill down into vmcore library time distribution I suppose the most of the time will be spent on class loading/verification. Anyway you can check it easily by yourself, because now I'm posting my thoughts but not the facts :) The another option is AOT (ahead of time compilation) and this technique is used by GCJ. In this case all classes are compiled to native code before program execution. This approach could be very useful in some scenarios and I think its not too hard to prototype in drlvm if you are interested in such kind of research. -- Mikhail Fursov