编译器对最里层循环能进行更好地优化,对外层循环的优化并非如此。对于多层循环的优化有两种方式:
一是尽量将多层循环从逻辑上改为一层循环,如果可行的话。比如将二层循环改为一层循环:
优化前的代码:
优化后的代码:
for (int i = 0; i < 1000; i++)
{
for (int j = 0; j < 10; j++)
sum += data[i][j];
}优化后的代码:
for (int i = 0; i < 1000*10; i++)
{
sum += data[i/1000][i%10];
}二是将循环量大的循环放在里层,循环量小的放在外层。对上面的原始代码进行优化如下:
for (int j = 0; j < 10; j++)
{
for (int i = 0; i < 1000; i++)
sum += data[i][j];
}
本文详细介绍了在多层循环优化中,如何通过将循环量大的循环放置于内层以及尝试将多层循环转换为一层循环来提升程序效率。以实例代码为例,对比了原始代码与优化后的代码,直观展示了优化过程。

570

被折叠的 条评论
为什么被折叠?



