為什麼在 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 之間的正確操作非常困難。

更新時間:23-Jun-2020

221 次瀏覽

啟動您的 職業生涯

透過完成課程獲得認證

開始
廣告
© . All rights reserved.