DOES STARTUP TIME MATTER?
A strong argument can be made that for GUI-based programs, overall performance is more im-
portant than startup performance, and that the server compiler is more appropriate even in those
If the server compiler optimizes the GUI code in an application, the GUI will end up slightly
more responsive, but this difference is unlikely to be noticed by an end user. But if the program
performs a lot of other calculations, that work may matter. NetBeans, for example, can perform
extensive (and expensive) code refactoring, which will be faster when the server compiler is used.
Program vendors typically make the choice here for what they think their defaults should be (and
because startup time is one of the first things reviewers comment about, these programs are often
tuned to have the best possible startup time). If your experience of using the program is different,
don't hesitate to switch those programs to use the server or tiered compilers.
Finally, there is BigApp : a very large server program that loads more than 20,000 classes and
performs extensive initialization. Because it is an application server, it will certainly need to
use the server compiler. Even though a lot of processing is going on here, there is still a
slightly noticeable benefit to the client compiler. What's interesting about this example is one
thing mentioned in Chapter 1 : it's not always the JVM that is the problem. In this case, there
are so many JAR files that must be read from disk that it is the gating factor for performance
(otherwise, the startup difference would have been even more in favor of the client com-
1. The client compiler is most useful when the startup of an application is the over-
riding performance concern.
2. Tiered compilation can achieve startup times very close to those obtained from the