10
if ... else ifステートメントを確率で順序付けするとどのような影響がありますか?
具体的には、一連の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、プログラムの動作に他の影響を与えることなく、ステートメントを任意に並べ替えることができることを前提としています。私の回答では、3つの条件テストは相互に排他的であり、副作用はありません。確かに、望ましい動作を実現するためにステートメントを特定の順序で評価する必要がある場合、効率性の問題は疑わしいものです。