[請益] 關於三元運算子
應該是個蠢問題吧
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
→
07/28 23:52, , 1F
07/28 23:52, 1F
其實小弟根本不會 benchmark 所以也不知道下面測的是不是正確的
剛用 microtime() 去計算開始和結束的時間差
是發現三元運算子有 not 比沒 not 的時間多了約5%的時間
if else 反而比三元運算子快了約2%的時間
當然 not 也是多了約5%的時間
剛剛google也找不到有類似的討論
也不敢妄下定論說這個結果是可參考的
所以想請問 hSATAC 大哥,您 benchmark 出來的結果為何呢?
還是說您已經有最佳解可以提供給小弟參考嗎?
※ 編輯: tails32100 來自: 59.126.68.4 (07/29 00:26)
→
07/29 09:29, , 2F
07/29 09:29, 2F
→
07/29 09:31, , 3F
07/29 09:31, 3F
→
07/29 09:31, , 4F
07/29 09:31, 4F
感謝您,這答案有幫助到小弟了 :)
→
07/29 13:14, , 5F
07/29 13:14, 5F
→
07/29 13:15, , 6F
07/29 13:15, 6F
→
07/29 13:15, , 7F
07/29 13:15, 7F
呵呵,所以開頭就說這是個蠢問題了啊
小弟當然知道可讀性的重要,也都有在做
只是對於上述問題不想不求甚解罷了
另外
您可以直接回答「先別管優化了,你聽過可讀性嗎」
這答案小弟當然可以欣然接受
但叫別人做 benchmark ,然後別人該做的都做了,卻沒有提供任何參考結果
到最後還是不知道結果為何
→
07/28 23:52, , 8F
07/28 23:52, 8F
實際上結果就是:做了 benchmark 小弟還是不知道答案
雖然現在講是有點馬後炮,不過這句話建議可以省略啦
最後還是謝謝您提醒小弟可讀性和優化之間的平衡
※ 編輯: tails32100 來自: 118.170.27.17 (07/29 15:31)
→
07/29 18:56, , 9F
07/29 18:56, 9F
先鄭重說聲抱歉,當初小弟心算算錯%數
應該是原本的三分之一以下才對
已修正原文
如果是50%的差距當然就立馬可以確定not是會有影響的
但5%的差距其實有點小,會覺得好像是電腦故意測不準一樣
所以還是會想再多加確認,不管是數據上證明或是理論上說明都可以的
總之 再次謝謝 rickysu 大的說明和 hSATAC 大的詳解 <(_ _)>
※ 編輯: tails32100 來自: 59.126.68.4 (07/29 23:03)
討論串 (同標題文章)
PHP 近期熱門文章
PTT數位生活區 即時熱門文章