C ++一个大循环与多循环

时间:2015-04-18 11:20:40

标签: c++ optimization

一个大循环与许多小循环的性能有什么不同? 我需要迭代3个数组,每个数组包含64个元素,如果它是NULL,我还必须检查每个项目,如果是,我跳过那个迭代。编写一个大循环并在其中插入3个if,或编写3个小循环(每个数组一个)会更好吗?

2 个答案:

答案 0 :(得分:3)

一个大循环可能会更快,因为它总共有更少的分支(4对6)并且整体代码略少。

在大多数现代CPU中,3个小分支可能会更快,因为循环分支的成本很小,并且将循环分开可以使指令获取更有效。

这在很大程度上取决于循环中有多少代码,也可能取决于这些循环中分支的位置。分支预测也会受到影响,但这可能是两种方式。

答案 1 :(得分:1)

因此,更小的循环适合CPU缓存的可能性更高 执行可能比没有更大的循环快得多。