php程序中 if(1==$user) 和 if($user ==1) 在效率上有區別嗎?

兩種寫法都看到過


效率上沒什麼區別

--------------

if(1==$user)

在編程中,如果忘了一個=,程序會報錯

if($user==1)

如果你忘了一個=,可能永遠也發現不了

就是通過編程習慣來減少碼代碼時的錯誤,減少意外Bug


在php這種動態語言中,比較這種效率問題得多蛋疼?


我來手動測試驗證下:

&

&

&

&

測試結果:

$ time php test.php

real 0m12.352s
user 0m0.000s
sys 0m0.015s

$ time php test1.php

real 0m12.240s
user 0m0.000s
sys 0m0.031s

$ time php test2.php

real 0m4.635s
user 0m0.015s
sys 0m0.000s

$ time php test3.php

real 0m4.620s
user 0m0.000s
sys 0m0.015s

運行10000w次有0.001s(1ms)的精度差別,再考慮到2次測試的系統的各種調度,可以認為沒有效率上的差別。正如 @崔偉 所說 這是一種代碼習慣

如果你想自己再測試下又懶得複製黏貼代碼,這裡可以下載測試文件XCode/projects/==/php at master · Jayin/XCode · GitHub

ps 吐槽:在知乎上代碼真痛苦。。


感謝邀請!
雖然沒做過此類測試,但是感覺在效率上應該沒啥差距。
欣賞樓主的這種態度。


考慮這種情況的效率毫無意義


培養良好書寫習慣,從娃娃抓起


PHP cookbook 3rd上說的就是最高票的意思,完全是避免把=和==搞混淆了。僅此而已。


追求性能到這種地步,你就換個語言吧!


$ time php test.php

real 0m12.352s
user 0m0.000s
sys 0m0.015s

$ time php test1.php

real 0m12.240s
user 0m0.000s
sys 0m0.031s

$ time php test2.php

real 0m4.635s
user 0m0.015s
sys 0m0.000s

$ time php test3.php

real 0m4.620s
user 0m0.000s
sys 0m0.015s


效率上很難看出區別。這種寫法主要是為了避免把==寫成=,畢竟頭昏腦脹的時候一眼看上去$a = 1很像是對的,而1 = $a不管你怎麼頭昏腦脹還是會覺得不對。

此外這種習慣不僅存在於php的編寫中,在其他語言里也很常見


這不涉及效率問題,這是一種代碼習慣,以便於防止手誤,將==寫成=,這個錯誤是所有C及C衍生語言或類C語言程序員都犯過的錯誤~~


推薦閱讀:

如何通俗地解釋 CGI、FastCGI、php-fpm 之間的關係?
PHP 面試問哪些問題可以比較準確的反映出應聘者的開發水平?
PHP高級程序員所要掌握的技能?
作為一名合格的PHP程序員,應該進行哪些技術儲備?
PHP自由職業者靠譜嗎?或者說是大學在校生,靠接一些項目來做賺錢養活自己。?

TAG:PHP | PHP程序員 | PHP開發 |