2016-08-23 10 views
-5

どのコードが最適化されていますか効率的ですか?Javaで2つのプリミティブを比較する最も効率的な方法は?

double a; 
double b; 

if (a == b) 
    return true; 

または

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

どの言語ですか?非常に特定のシステムで作業しない限り、1つの操作であるため、最初の操作は最速でなければなりませんが、他の操作がどこかでより高速になることは疑いがあります。 – HopefullyHelpful

+2

これらは非常に異なることに注意してください。 'a = 4、b = 2' ...そして' a%b == 0'を考えてみましょう。ただし、 'a!= b'です。 –

+1

あなたのタイトルは恐ろしいです、それはあなたの質問とは関係ありません、それを探している人は決してそれを見つけることはありません。比較や平等に関して何かに名前を変更してください。 – HopefullyHelpful

答えて

7

a % b == 0abに等しいことを意味するものではありません。したがって、コンパイラはこれを最適化することはできません。

他の2つについては、a == bを明示的に使用して、最適化をコンパイラに任せてください。

+0

もっと重要なことに、適切なコンパイラは 'a == b 'を' a - b == 0'と同じコードに最適化して*最適化します。 (例えば、浮動小数点のためではなく、 'a-b'はFPの不正確な結果例外を発生させることができますが、少なくともISO Cでは' a == b'はできません) –

関連する問題