Loop Unrolling
Loop unrolling is the compile-time expansion of a loop into repetitions of the code, with the loop index replaced by its value in each instance.
for (i = 0; i < 3; i++) disp[i] = c2[i] - c1[i];is expanded into:
disp[0] = c2[0] - c1[0]; disp[1] = c2[1] - c1[1]; disp[2] = c2[2] - c1[2];
Loop: | Unrolled: | |
Instructions: | 20 | 12 |
Executed: | 57 | 12 |
The second form runs faster, and it may generate less code. This is a useful optimization when the size of the loop is known to be a small constant at compile time.