Computer >> Máy Tính >  >> Lập trình >> C ++

Tại sao xử lý mảng được sắp xếp nhanh hơn so với mảng không được sắp xếp trong chương trình C ++?

Trong C ++, xử lý mảng được sắp xếp nhanh hơn so với mảng không được sắp xếp do dự đoán rẽ nhánh. Trong kiến ​​trúc máy tính, dự đoán rẽ nhánh xác định xem một nhánh có điều kiện (bước nhảy) trong luồng lệnh của chương trình có khả năng được thực hiện hay không.

Hãy lấy một ví dụ:

if(arr[i] > 50) {
   Do some operation B
} else {
   Do some operation A
}

Nếu chúng tôi chạy mã này cho 100 phần tử theo thứ tự chưa được sắp xếp và sắp xếp bên dưới thì mọi việc sẽ xảy ra:

Đối với mảng đã sắp xếp:

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

Đối với mảng không được sắp xếp:

5,51,6,90,4,49,60…
A,B,A,B,A,A,A,B

Dự đoán nhánh không đóng vai trò quan trọng của nó ở đây. Rất khó để dự đoán hoạt động đúng giữa A và B.