在多重循环中,如果有可能,应当将最长的循环放在最内层,最短的循环放在最外层,以减少CPU 跨切循环层的次数。
for (row=0; row<100; row++)
{ for ( col=0; col<5; col++ ) { sum = sum + a[row][col]; } } 低效率:长循环在最外层for (col=0; col<5; col++ )
{ for (row=0; row<100; row++) { sum = sum + a[row][col]; } }高效率:长循环在最内层
如果循环体内存在逻辑判断,并且循环次数很大,宜将逻辑判断移到循环体的外面。
如果N 非常大,最好采用下面的写法,可以提高效率。
if (condition)
{ for (i=0; i<N; i++) DoSomething(); } else { for (i=0; i<N; i++) DoOtherthing(); }如果N 非常小,两者效率差别并不明显,采用下面的写法比较好,因为程序更加简洁。
for (i=0; i<N; i++)
{ if (condition) DoSomething(); else DoOtherthing(); }