回答
兩者都會編譯成相同的代碼。您選擇使用哪一個應取決於哪一個最具可讀性。
這個版本:
if(var_name == NULL)
應該只有當var_name
是指針使用,否則你會迷惑人誰在未來的讀取你的代碼。如果你在非指針上使用它,一些編譯器可能會抱怨。
這一個:
if(!var_name)
應該在的情況下使用,當你在邏輯上治療var_name
作爲布爾(真/假)值。這可以包括當var_name
是指針時,因爲NULL
是「false」或未定義指針的值。因爲我覺得它表達的意圖更加清晰
if(var_name == 0)
:
如果var_name
是一個整數,那麼我會選擇第三個選項。
實際上,它們可能會編譯到不同的彙編語言指令,取決於處理器。有些處理器可能有*如果不等於*跳轉*(*如果不是零跳轉*)有些可能不是。無論哪種情況,與需求或設計優化相比,這都是一項簡單的優化。這個級別的優化是平臺特定的。 – 2010-02-08 19:32:36
據說平等和不平等的經營者通常同樣更快:) – user347594 2010-05-27 17:13:09
沒關係。無論使用什麼編譯器,兩者都會非常高效,而且大多數編譯器都會編譯成完全相同的代碼。如果這是您真正關心的問題,請查看您的特定編譯器發出的彙編/機器代碼。
我懷疑任何潛在的差異將永遠是顯着的。 – 2010-02-08 10:13:32
@Brian Rasmussen:它可以很大程度上依賴於comppiler和要求。真的,如果有人在乎這麼多,他應該考慮拆解。 – sharptooth 2010-02-08 10:16:04
沒關係。
更改這將是micro optimisation並不太可能改變你的應用程序的性能(除非你已經檢查過這是瓶頸)。 除此之外,我敢打賭,編譯器會將此語句更改爲最佳語句(如果重要),所以我會使用您喜歡的語法。
我不會使用編譯器爲性能敏感的東西生成不同的代碼。
如果var_name是一個指針,並且你正在爲一些嵌入式系統編譯一個蹩腳的非優化編譯器,var_name == NULL
會更快,因爲一個強制轉換爲布爾值後接負號,然後跟真值比較會比普通價值比較。在大約每個其他編譯器的情況下,它們將被優化到相同的代碼。
顯然,一個蹩腳的非優化編譯器可以讓它喜歡任何代碼,但n1256的6.5.3.3/5表示「表達式!E等價於(0 == E)」。所以這不僅僅是疏忽,C編譯器實際上必須爲此而走出困境!運算符生成轉換爲布爾類型的代碼,然後將其與真正的比較,因爲這不是如何!運算符被定義。在C++中可能會有所不同,我不記得了。 – 2010-02-08 11:08:31
第一個。它縮短了7個字符。
...沒有。就是不行。字符數!=可讀性或更好。讓我們看看,哪一個告訴我更多,'dlsym'或'GetProcAddress'? – 2010-09-21 03:24:58
我的觀點是兩者之間的唯一區別是它們所採用的字符數量,並且與編譯器沒有什麼區別,就像空白區別不同......在「高效」的意義上使用劇本。我碰巧喜歡第一個更好,但這肯定是一個品味的問題。 – 2010-09-21 19:51:15
如果「變種」是一個UDT,那麼選擇哪一種使用將引導更多由這些運營商的類提供,而不是效率(我相信是最上面的答覆回答)
從效率的角度來看,兩者都是等價的,但後來更適合可讀性,這在編碼中也起着至關重要的作用。
- 1. 更改IF語句以提高效率
- 2. Android - 哪種效率更高?
- 3. SQL Server:BCP與SQLCMD - 哪種效率更高?
- 4. 哪個更有效率,使用HashMap或If語句導航
- 5. 比if語句更高效嗎?
- 6. 哪種編碼更高效?
- 7. 哪個SQL語句更高效?
- 8. 哪個Ruby語句更高效?
- 9. 更高效3 if語句中的語句
- 10. 哪種方式更有效率?
- 11. If語句中的內存效率
- 12. else if語句效率變量分配
- 13. 哪種技術更高效?
- 14. 哪種查詢更高效?
- 15. 哪種功能更快更高效?
- 16. case語句或if語句效率的角度
- 17. 更高效的MySQL語句?
- 18. 在更新mysql中的某一行時,哪種語句在有或沒有附加條件時效率更高
- 19. 將值存儲在web.config中 - appSettings或configSection - 哪種效率更高?
- 20. jpg或png用於UIImage - 哪種效率更高?
- 21. 哪種性能更好? COBOL中的「if else」或「Evaluate」語句?
- 22. 哪個效率更高 - $('selector')。last()或$('selector:last')?
- 23. 以上哪兩項效率更高?
- 24. switch語句中的String如何比對應的if-else語句更高效?
- 25. if語句語法無效
- 26. 無效語法if語句
- 27. IF語句或更有效的東西?
- 28. MongoDB集合 - 哪種方式更高效?
- 29. Octave:哪種方法更高效
- 30. 哪種SQL查詢更高效?
var_name是一個指針 – Pardeep 2010-02-08 10:13:53
這有什麼不同? – 2010-02-08 10:14:57
當您運行基準測試時,您觀察到了什麼? – 2010-02-08 10:16:06