1. 程式人生 > >if-else 與 三目 的效率比較

if-else 與 三目 的效率比較

簡單說一下 if-else 和 三目 的效率 (常數優化) 先放結論: 1.多用三目,少用if-else 2.如果用if,把概率大的放前面

下面是原理: 程式執行時,處理器會通過並行運算而加速執行,當遇到選擇支時則會停下判斷 (例如高速行駛的大卡車遇到了分岔路) if-else 是先賦值再運算,為了節省時間,分支預測會先猜測執行 if 還是 else 並繼續執行 (預設是if),若猜對則因並行運算而節省時間,若猜錯則因消除運算而耗費時間。 (卡車直接衝向一邊康康可不可以走通,如果可以則繼續走,如果不可以則回頭走另一條路)(成本是回到分岔處的時間) 三目 是先運算再賦值,遇到選擇支時停止並行並判斷條件。(在分岔處停下康地圖) (成本是重新加速需要的時間) 在多數情況下,運算結果為0與為1的可能相近,分支預測&並行運算 會比三目耗費更多的時間,所以應更多的使用三目。 在一些情況下,運算結果大多為0或大多為1(80+%),這時 分支預測&並行運算 的損耗遠小於三目,所以應選擇 if-else