C/C++循环语句中,for语句使用频率最高,while语句其次,do语句很少用。本节重点讨论循环体的效率。提高循环体效率的基本办法是降低循环体的复杂性。
- 【建议4-4-1】在多重循环中,如果有可能,应当将最长的循环放在最内层,最短的循环放在最外层,以减少CPU夸切循环层的次数。
//低效率:长循环在最外层 for (row = 0; row < 100; ++row) { for (col = 0; col < 5; ++col) { sum += a[row][col]; } } //高效率:长循环在最内层 for (col = 0; col < 5; ++col) { for (row = 0; row < 100; ++row) { sum += a[row][col]; } }
- 【建议4-4-2】如果循环体内存在逻辑判断,并且循环次数很大,宜将逻辑判断移到循环体的外面。由于多次要进行逻辑判断,打断了循环“流水线”作业,使得编译器不能对循环进行优化处理,降低了效率。
//如果N非常小,两者效率差别并不明显,但是采用这种写法看上去非常简洁 for (i = 0; i < N; ++i) { if (condition) DoSomething(); else DoOtherthing(); } //如果N非常大,采用这种写法可以提高效率 if (condition) { for (i = 0; i < N; ++i) DoSomething(); } else { for (i = 0; i < N; ++i) DoOtherthing(); }
原文地址:https://www.cnblogs.com/bootblack/p/11782404.html
时间: 2024-10-10 14:09:10