ใน 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