一个大循环与许多小循环的性能有什么不同? 我需要迭代3个数组,每个数组包含64个元素,如果它是NULL,我还必须检查每个项目,如果是,我跳过那个迭代。编写一个大循环并在其中插入3个if,或编写3个小循环(每个数组一个)会更好吗?
答案 0 :(得分:3)
一个大循环可能会更快,因为它总共有更少的分支(4对6)并且整体代码略少。
在大多数现代CPU中,3个小分支可能会更快,因为循环分支的成本很小,并且将循环分开可以使指令获取更有效。这在很大程度上取决于循环中有多少代码,也可能取决于这些循环中分支的位置。分支预测也会受到影响,但这可能是两种方式。
答案 1 :(得分:1)
因此,更小的循环适合CPU缓存的可能性更高 执行可能比没有更大的循环快得多。