Optimizing Nested Loops

Several compilers need this hint from the programmer while others are clever enough to figure it out automatically. When you have nested loops, declare the counter of the most deeply-nested loop as a register variable. For example:

 for (int i = 0; i <1000; ++i){  for (register int j = 0; j <1000; ++j)   {    // .. this code will be executed a 1,000,000 times }}

The variable i will be accessed 1000 times. However, j will be accessed a million times. Therefore, storing j in a CPU register can give a significant performance boost compared to storing i in a register. Of course, storing both i and j in registers is even better. Alas, the number of free registers is usually very limited so when you have to make a choice, declare the counter of the innermost loop as a register variable.

Share the Post:
Share on facebook
Share on twitter
Share on linkedin


Recent Articles: