A compiler can automatically optimize the code by unrolling loops. Consider this code:
int *buff = new int[3]; for (int i =0; i
On every iteration, the loop assigns a value to the next array element. However, precious CPU time is also wasted on testing and incrementing the loop counter, and performing a jump statement. To avoid this overhead, the compiler can unroll the loop into a sequence of three assignment statements:
buff[0] = 0; buff[1] = 0; buff[2] = 0;
This way, you avoid the unnecessary overhead of a loop. Note, however, that the compiler applies this optimization automatically; you shouldn't do it yourself.