Synopses & Reviews
No matter what language they're programming in, developers always wish things would run faster! Especially when writing mission-critical applications, no one wants to be limited by the programming environment.Java Performance Tuning provides all the details you need to know to "performance tune" any type of Java program and make Java code run significantly faster.Java Performance Tuning contains step-by-step instructions on all aspects of the performance tuning process, right from such early considerations as setting goals, measuring performance, and choosing a compiler. Extensive examples for tuning many parts of an application are described in detail, and any pitfalls are identified. The book also provides performance tuning checklists that enable developers to make their tuning as comprehensive as possible.Java Performance Tuning is a book to help you "roll up your sleeves" and examine your code in detail in order to apply different tuning techniques to produce the best possible result.The book shows you how to:
- Create and plan a tuning strategy
- Avoid performance penalties from inefficient code
- Minimize the number of objects a program creates
- Improve the behavior of loops and switches
- Use threads effectively
Synopsis
"Java Performance Tuning" provides the details developers need to know to performance tune any type of Java program and make Java code run significantly faster. Presents step-by-step instructions on all aspects of the tuning process, with extensive, detailed examples and performance tuning checklists.
About the Author
Jack Shirazi is an independent consultant. He was an early adopter of Java, and for the last few years has consulted mainly for the financial sector, focusing on Java performance. Before using Java, Jack spent many years tuning Smalltalk applications. Jack's early career involved research in theoretical physics and bioinformatics. Jack has publications in the field of protein structure and is proud to have contributed to some of the core Perl5 modules.
Table of Contents
Preface; Contents of This Book; Virtual Machine (VM) Versions; Conventions Used in This Book; Comments and Questions; Acknowledgments; Chapter 1: Introduction; 1.1 Why Is It Slow?; 1.2 The Tuning Game; 1.3 System Limitations and What to Tune; 1.4 A Tuning Strategy; 1.5 Perceived Performance; 1.6 Starting to Tune; 1.7 What to Measure; 1.8 Don't Tune What You Don't Need to Tune; 1.9 Performance Checklist; Chapter 2: Profiling Tools; 2.1 Measurements and Timings; 2.2 Garbage Collection; 2.3 Method Calls; 2.4 Object-Creation Profiling; 2.5 Monitoring Gross Memory Usage; 2.6 Client/Server Communications; 2.7 Performance Checklist; Chapter 3: Underlying JDK Improvements; 3.1 Garbage Collection; 3.2 Replacing JDK Classes; 3.3 Faster VMs; 3.4 Better Optimizing Compilers; 3.5 Sun's Compiler and Runtime Optimizations; 3.6 Compile to Native Machine Code; 3.7 Native Method Calls; 3.8 Uncompressed ZIP/JAR Files; 3.9 Performance Checklist; Chapter 4: Object Creation; 4.1 Object-Creation Statistics; 4.2 Object Reuse; 4.3 Avoiding Garbage Collection; 4.4 Initialization; 4.5 Early and Late Initialization; 4.6 Performance Checklist; Chapter 5: Strings; 5.1 The Performance Effects of Strings; 5.2 Compile-Time Versus Runtime Resolution of Strings; 5.3 Conversions to Strings; 5.4 Strings Versus char Arrays; 5.5 String Comparisons and Searches; 5.6 Sorting Internationalized Strings; 5.7 Performance Checklist; Chapter 6: Exceptions, Casts, and Variables; 6.1 Exceptions; 6.2 Casts; 6.3 Variables; 6.4 Method Parameters; 6.5 Performance Checklist; Chapter 7: Loops and Switches; 7.1 Java.io.Reader Converter; 7.2 Exception-Terminated Loops; 7.3 Switches; 7.4 Recursion; 7.5 Recursion and Stacks; 7.6 Performance Checklist; Chapter 8: I/O, Logging, and Console Output; 8.1 Replacing System.out; 8.2 Logging; 8.3 From Raw I/O to Smokin' I/O; 8.4 Serialization; 8.5 Clustering Objects and Counting I/O Operations; 8.6 Compression; 8.7 Performance Checklist; Chapter 9: Sorting; 9.1 Avoiding Unnecessary Sorting Overhead; 9.2 An Efficient Sorting Framework; 9.3 Better Than O(nlogn) Sorting; 9.4 Performance Checklist; Chapter 10: Threading; 10.1 User-Interface Thread and Other Threads; 10.2 Race Conditions; 10.3 Deadlocks; 10.4 Synchronization Overheads; 10.5 Timing Multithreaded Tests; 10.6 Atomic Access and Assignment; 10.7 Thread Pools; 10.8 Load Balancing; 10.9 Threaded Problem-Solving Strategies; 10.10 Performance Checklist; Chapter 11: Appropriate Data Structures and Algorithms; 11.1 Collections; 11.2 Java 2 Collections; 11.3 Hashtables and HashMaps; 11.4 Cached Access; 11.5 Caching Example I; 11.6 Caching Example II; 11.7 Finding the Index for Partially Matched Strings; 11.8 Search Trees; 11.9 Performance Checklist; Chapter 12: Distributed Computing; 12.1 Tools; 12.2 Message Reduction; 12.3 Comparing Communication Layers; 12.4 Caching; 12.5 Batching I; 12.6 Application Partitioning; 12.7 Batching II; 12.8 Low-Level Communication Optimizations; 12.9 Distributed Garbage Collection; 12.10 Databases; 12.11 Performance Checklist; Chapter 13: When to Optimize; 13.1 When Not to Optimize; 13.2 Tuning Class Libraries and Beans; 13.3 Analysis; 13.4 Design and Architecture; 13.5 Tuning After Deployment; 13.6 More Factors That Affect Performance; 13.7 Performance Checklist; Chapter 14: Underlying Operating System and Network Improvements; 14.1 Hard Disks; 14.2 CPU; 14.3 RAM; 14.4 Network I/O; 14.5 Performance Checklist; Chapter 15: Further Resources; 15.1 Books; 15.2 Magazines; 15.3 URLs; 15.4 Profilers; 15.5 Optimizers; Colophon;