Reflections on program optimization
Modern program optimization techniques that rely on sophisticated program analyses can result in enormous improvements in program performance. The cost associated with such an effort is usually measured in terms of compiler speed and complexity. However, there are at least two other, perhaps more severe, costs to be reckoned with: First, program performance can become very difficult to reason about (the programmer needs to understand the inner workings of the compiler). Second, programs can lose portability (a large enough quantitative difference amounts to a qualitative difference). In this talk I will attempt to classify the kinds of languages, language features, optimizations, etc. that are particularly susceptible to these problems, and discuss ways whereby we might alleviate the problems.