Partial Evaluation
Partial evaluation is the technique of evaluating those parts of a program that can be evaluated at compile time, rather than waiting for execution time.
For example, the rotation of a point in homogeneous coordinates by an angle θ around the x axis is accomplished by multiplying by the matrix:
lccr 1
Many of the cycles consumed in the matrix multiply would be wasted because they would be trivial computations ( e.g., multiplying by 1 or adding 0).
By unrolling the loops of matrix multiply, substituting the values from the coefficient matrix, and performing partial evaluation on the result, a specialized version of the matrix multiply can be obtained. This version saves many operations:
Version: | Load | Store | Add/Sub | Mul | Total |
General | 128 | 16 | 48 | 64 | 256 |
Specialized | 24 | 16 | 8 | 16 | 64 |