看板 PHP 關於我們 聯絡資訊
應該是個蠢問題吧 if ($bool) { $value = 'true'; } else { $value = 'false'; } $value = $bool ? true : false; 執行結果是相等的 聽說C在這兩個寫法編譯結果和反編譯也是一模一樣的 假設PHP也是相同的情況 那兩個寫法的效能應該會是一樣的 再來其實想問的是 $value = $bool ? true : false;$value = !$bool ? false : true; 執行的效能也會是一樣的嗎? 感謝 <(_ _)> -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.126.68.4
hSATAC:你怎麼不 benchmark 看看就知道了呢 07/28 23:52
其實小弟根本不會 benchmark 所以也不知道下面測的是不是正確的 剛用 microtime() 去計算開始和結束的時間差 是發現三元運算子有 not 比沒 not 的時間多了約5%的時間 if else 反而比三元運算子快了約2%的時間 當然 not 也是多了約5%的時間 剛剛google也找不到有類似的討論 也不敢妄下定論說這個結果是可參考的 所以想請問 hSATAC 大哥,您 benchmark 出來的結果為何呢? 還是說您已經有最佳解可以提供給小弟參考嗎? ※ 編輯: tails32100 來自: 59.126.68.4 (07/29 00:26)
rickysu:!$bool 得多做一次 not 當然比較慢阿。 07/29 09:29
rickysu:此外 if else 跟三元運算,在 php 中編譯出來的opcode 07/29 09:31
rickysu:是不同的,如果有興趣研究的話可以 google vld 吧。 07/29 09:31
感謝您,這答案有幫助到小弟了 :)
hSATAC:我沒有做耶,謝謝你的分享囉 07/29 13:14
hSATAC:我個人的看法的話,在這個層級的優化上,不如把心力放在 07/29 13:15
hSATAC:可讀性上... 07/29 13:15
呵呵,所以開頭就說這是個蠢問題了啊 小弟當然知道可讀性的重要,也都有在做 只是對於上述問題不想不求甚解罷了 另外 您可以直接回答「先別管優化了,你聽過可讀性嗎」 這答案小弟當然可以欣然接受 但叫別人做 benchmark ,然後別人該做的都做了,卻沒有提供任何參考結果 到最後還是不知道結果為何
hSATAC:你怎麼不 benchmark 看看就知道了呢07/28 23:52
實際上結果就是:做了 benchmark 小弟還是不知道答案 雖然現在講是有點馬後炮,不過這句話建議可以省略啦 最後還是謝謝您提醒小弟可讀性和優化之間的平衡 ※ 編輯: tails32100 來自: 118.170.27.17 (07/29 15:31)
hSATAC:你不是已經做出結果了嗎 @@? 有 not 多 15% 時間呀 07/29 18:56
先鄭重說聲抱歉,當初小弟心算算錯%數 應該是原本的三分之一以下才對 已修正原文 如果是50%的差距當然就立馬可以確定not是會有影響的 但5%的差距其實有點小,會覺得好像是電腦故意測不準一樣 所以還是會想再多加確認,不管是數據上證明或是理論上說明都可以的 總之 再次謝謝 rickysu 大的說明和 hSATAC 大的詳解 <(_ _)> ※ 編輯: tails32100 來自: 59.126.68.4 (07/29 23:03)