2016-08-23 48 views
-5

哪些代碼更好或優化或有效?比較Java中2個基元的最有效方法?

double a; 
double b; 

if (a == b) 
    return true; 

if (a - b == 0) 
    return true; 
+1

用什麼語言?第一個應該是最快的,因爲這是一個操作,除非你在一個非常特定的系統上工作,但我懷疑其他人會在某個地方更快。 – HopefullyHelpful

+2

請注意,他們做了非常不同的事情。考慮'a = 4,b = 2' ...然後'a%b == 0',但是'a!= b'。 –

+1

您的標題太可怕了,與您的問題無關,任何搜索它的人都無法找到它。將它重命名爲關於比較或均等的內容。 – HopefullyHelpful

回答

7

a % b == 0並不意味着a等於b。所以編譯器無法對此進行優化。

至於另外兩個,你應該使用a == b,因爲它更清晰,並將優化留給編譯器。

+0

更重要的是,如果這些表達式是相同的,那麼任何像樣的編譯器都可以*優化'a == b'到與'a - b == 0'相同的代碼。 (例如,它們不適用於浮點,其中'a-b'可以引發一個FP不精確的結果異常,但是'a == b'不能,至少在ISO C.中) –

相關問題