為什麼在 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