Web Performance Tuning, 2nd edition by Patrick Killelea The unconfirmed error reports are from readers. They have not yet been approved or disproved by the author or editor and represent solely the opinion of the reader. Here's a key to the markup: [page-number]: serious technical mistake {page-number}: minor technical mistake : important language/formatting problem (page-number): language change or minor formatting problem ?page-number?: reader question or request for clarification This page was updated May 29, 2002. UNCONFIRMED errors and comments from readers: (23) 4th paragraph; It well known should be: It is well known (38) 3rd paragraph; technologies give users should be: technologies that give users (42) 9th paragraph; respective chapters in of Should be: respective chapters of (112) 4th paragraph; reviews of the some standard Should be: reviews of some of the standard (158) 5th paragraph; dependence in optimizations Should be: dependence on optimizations (255) 4th paragraph; $ java EcoServer 8888 Should be: $ java EchoServer 8888 {279} 2nd paragraph; Quote: "If we compile this and run one thread under Sun's Java 1.1.7 on a 4-CPU Sun machine the execution time is 13 seconds:" Note that this does not include startup costs (the time required to set up the Java Virtual Machine, load the class file, instantiate any objects, and create the main thread). These can be estimated as shown below (obviously the absolute time value is not comparable, as both the hardware and the Java Virtual Machine differ). To estimate the Java Virtual Machine setup time: martin@living:~/WebPerf/ch16> time java -version java version "1.4.0" Java(TM) 2 Runtime Environment, Standard Edition(build 1.4.0-b92) Java HotSpot(TM) Client VM (build 1.4.0-b92, mixed mode) real 0m1.677s user 0m1.620s sys 0m0.040s And because the bulk of the processing is performed by the threads (the main method merely launches the threads - at 50 milliseconds or so, this can be ignored), a better measure of the overall startup costs (the Virtual Machine, plus class loading, object creation and the main thread) can be derived as follows: martin@living:~/WebPerf/ch16> time java Loop 0 real 0m2.265s user 0m2.140s sys 0m0.110s These costs will be relatively constant for any number of threads, and can be safely ignored for performance purposes when amortized over many threads. This is not really a technical mistake (possibly it's an omission), but I thought it was interesting enough to include here for others to read. (312) 3rd paragraph; "The java.awt package needs to open an X display to render GIF images, even if the image is generated off-screen." With the recent release of Java 1.4, 'headless' (i.e. no X display) operation is theoretically possible. The following link offers more information: http://java.sun.com/j2se/1.4/docs/guide/awt/AWTChanges.html#headless This is obviously not a 'language change or typo', merely a recent development that might be of interest. {409} 3rd paragraph; Compile with 'java jdbcCxnTest'. Should be: Compile with 'javac jdbcCxnTest.java'. Obtain a usage message with 'java jdbcCxnTest'. (414) 4th paragraph; intgrate Should be: integrate (417) 5th paragraph; 10,00PCs? Should be: 1,000 PCs? (423) 4th paragraph; with Resonate that Should be: with Resonate is that