为什么在 C++ 中处理有序数组比无序数组要快?
在 C++ 中,处理有序数组比无序数组更快,这是由于分支预测。在计算机架构中,分支预测确定程序指令流中的条件分支(跳转)是否可能发生。
我们来看一个示例 −
if(arr[i] > 50) { Do some operation B } else { Do some operation A }
如果我们针对下面的无序和有序数组运行此代码 100 次元素,就会发生如下情况 −
对于有序数组 −
1, 2, 3, 4, 5, …… 50, 51………100 A, A, A, A, A A, B B
它将加载流水线和正确的顺序中的正确分支
A, A, A, A, A, A, A, A A, B B
对于无序数组 −
5, 51, 6, 90, 4, 49, 60… A, B, A, B, A, A, A, B
分支预测在此不发挥重要作用。预测 A 和 B 之间的正确操作非常困难。
广告