2016-08-23 71 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.中) –

相关问题