2013-02-06 52 views
-2

問題:我只想問2個問題,如果我在java中寫下2個代碼然後哪個在CPU週期方面更快,爲什麼?有人告訴我,第一個選項在cpu週期方面是不正確的,因爲在這兩個條件下,即檢查和!根據CPU週期重構代碼JAVA

boolean flag = true; 

//OPTION ONE 
if(!flag) { 
    //error 
} else { 
    //got the answer 
} 

//OPTION TWO 
if(flag) { 
    //got the answer 
} else { 
    //error 
} 
+8

你有沒有任何理由相信不管有什麼不同(這可能取決於很多因素)在你的應用程序中會很重要?以最清潔的方式編寫代碼*,並保留微優化,直到您證明需要爲止。 –

+0

但我想知道正確的答案 – Pradeep

+2

沒有一個明確的正確答案。這取決於您正在使用的虛擬機以及當時JIT執行的優化級別(等等)。 –

回答

7

在現代的JVM實現沒有實際差別

編譯器會做正確的事情,不用擔心。事實上,如果它可以證明在編譯時標誌總是有一個常量值true,它將完全消除檢查和無法到達的分支。

+0

如果布爾標誌值來自服務器或來自運行時,該怎麼辦 – Pradeep

+1

然後它仍然沒有區別。停止優化這樣的事情。 –