10
อะไรคือผลของการสั่งซื้อถ้า ... หากงบโดยความน่าจะเป็น
โดยเฉพาะอย่างยิ่งถ้าฉันมีชุดคำสั่งif... else ifและฉันก็รู้ว่าความน่าจะเป็นแบบสัมพัทธ์ที่แต่ละคำสั่งจะประเมินเป็นtrueเท่าใดความแตกต่างของเวลาการดำเนินการจึงทำให้เรียงลำดับตามความน่าจะเป็นเท่าใด ตัวอย่างเช่นฉันควรจะชอบสิ่งนี้: if (highly_likely) //do something else if (somewhat_likely) //do something else if (unlikely) //do something สำหรับสิ่งนี้?: if (unlikely) //do something else if (somewhat_likely) //do something else if (highly_likely) //do something ดูเหมือนว่ารุ่นที่เรียงจะเร็วกว่าอย่างไรก็ตามเพื่อความสะดวกในการอ่านหรือการมีผลข้างเคียงเราอาจต้องการเรียงลำดับแบบไม่เหมาะสม เป็นการยากที่จะบอกได้ว่า CPU จะทำอย่างไรกับการคาดคะเนสาขาจนกว่าคุณจะเรียกใช้รหัสจริง ดังนั้นในการทดลองกับสิ่งนี้ฉันลงเอยด้วยการตอบคำถามของฉันเองสำหรับกรณีเฉพาะ แต่ฉันต้องการฟังความคิดเห็น / ข้อมูลเชิงลึกอื่น ๆ ด้วย สำคัญ: คำถามนี้สันนิษฐานว่าifคำสั่งนั้นสามารถเรียงลำดับใหม่โดยพลการโดยไม่มีผลกระทบใด ๆ ต่อพฤติกรรมของโปรแกรม ในคำตอบของฉันการทดสอบตามเงื่อนไขสามข้อนั้นไม่เหมือนกันและไม่มีผลข้างเคียง แน่นอนถ้างบต้องได้รับการประเมินในลำดับที่แน่นอนเพื่อให้บรรลุพฤติกรรมที่ต้องการบางอย่างแล้วปัญหาของประสิทธิภาพคือ moot