Loop Fusion

Some adjacent loops can be fused into one loop to reduce loop overhead and improve run-time performance.

Example:

The two adjacent loops on the code fragment below can be fused into on loop.

for (i = 0; i < 300; i++)
  a[i] = a[i] + 3;

for (i = 0; i < 300; i++)
  b[i] = b[i] + 4;
  

Below is the code fragment after loop fusion.

for (i = 0; i < 300; i++)
  {
    a[i] = a[i] + 3;
    b[i] = b[i] + 4;
  }
  

Notes:

Loop fusion is not commonly supported by C compilers.

Although loop fusion reduces loop overhead, it does not always improve run-time performance, and may reduce run-time performance. For example, the memory architecture may provide better performance if two arrays are initialized in separate loops, rather than initializing both arrays simultaneously in one loop.