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