為什麼在 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 It will load the correct branch in pipeline and correct sequence 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