在 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 之間的正確操作。
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP