免責聲明/警告:
這是一個微優化,絕不會影響程序的效率的方式,是用戶衡量的。如果您關閉所有編譯器優化,並運行一個優秀的分析器,您可能能夠量化這些影響 - 但是沒有用戶會注意到。
對於您的情況尤其如此,所討論的代碼僅在每隔幾秒鐘運行一次。花費時間進行分析可能會更好地改進應用程序的其他部分。
此外,在這些情況下,可讀性應始終優先於非瓶頸微優化(儘管我的回答僅考慮到運行時效率)。因此,我建議您在這種情況下使用的代碼是x=true
,因爲它是最容易閱讀和理解的。
最後,如果添加檢查可以提高速度,編譯器可能已經知道並且會爲你做,所以你不會出錯x=true
(這就是爲什麼你應該在運行探查器之前關閉優化)。
答:
唯一正確的方法算出這個是通過分析。您可能會發現0測試(x == false)基本上沒有花時間,因此當x變爲true時,由於節省了時間,因此值得包括。或者您可能會發現測試需要足夠長的時間,以至於當x變成錯誤時浪費太多時間。
我的猜測是測試是不必要的。這是因爲0測試和其他按位操作(以及等等)都非常快,所以我通常會將它們視爲具有相同的基本時間量。如果0測試的時間與「或」操作的時間相同(設置爲真),那麼0測試會浪費時間。當然,剖析可能證明我錯了,我的猜測是基於對按位運算的寬鬆假設,所以如果你選擇運行一個剖析器並找出它,我肯定會對結果感興趣。
來源
2010-06-14 17:15:53
Cam
它不會有任何明顯的區別(除非設置x有副作用,例如調度事件,引起聽衆反應等,在這種情況下,答案是「取決於」)。在程序邏輯中做任何有意義的事情。 – 2010-06-14 17:14:20