next up previous
Next: Optimization Up: Prospects for Profile-aided Lambda Previous: Prospects for Profile-aided Lambda

Introduction

A compiler can either directly produce an executable image of a program or it can make certain useful transformations on it in the process of producing the final executable image. These transformations, also called optimizations are made in order to reduce execution latency of the program without changing its output value. There are several kinds of such transformations at source, intermediate and assembly level. However, the optimality of the resultant code depends greatly on its usage. Whether the transformation is beneficial to the program is often decided by the flow of control through it and is known only at program execution time.

An intelligent compiler would choose the optimizations to be performed on a particular program, based on the performance information it may have acquired during a previous run of the same. It is not useful to run the same program twice to get better performance the second time, when the second compilation could have eliminated altogether, by simply recording the output. But, it can be very useful if some applications perform the same kind of computation over and over again. For some computation intense programs, even if collecting performance information for the first few runs decreases the execution time of the next hundred runs by a few seconds it will contribute considerably to the overall performance gain.


next up previous
Next: Optimization Up: Prospects for Profile-aided Lambda Previous: Prospects for Profile-aided Lambda
Dipanwita Sarkar
2001-02-24