在 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-6 月 -2020

221 個瀏覽量

開啟你的 職業生涯

完成課程並獲得認證

立即開始
廣告
© . All rights reserved.