5.1 Capabilities and Limitations of Optimizing Compilers

5.2 Expressing Program Performance

5.3 Program Example

5.4 Eliminating Loop Inefficiencies

5.5 Reducing Procedure Calls

5.6 Eliminating Unneeded Memory References

5.7 Understanding Modern Processors

5.8 Loop Unrolling

5.9 Enhancing Parallelism

5.10 Summary of Results for Optimizing Combining Code

5.11 Some Limiting Factors

5.12 Understanding Memory Performance

5.13 Life in the Real World: Performance Improvement Techniques

5.14 Identifying and Eliminating Performance Bottlenecks