-1

Javaでの整数比較の相対的な効率は?

== >= <= > <

物理アーキテクチャに依存しますか?

4

4 に答える 4

4

かなりの差があると思います。存在する場合、コンパイラが式を最適なテストに変換する可能性が高くなります。引数の 1 つが 0 の場合、違いはまったくないはずです。

これが何らかの違いを生むようなことをしているのなら、それが何であるかを知りたい.

于 2012-06-12T05:30:57.033 に答える
0

はい、ハードウェア アーキテクチャと JVM の両方に依存します。Java は、Java 仮想マシン仕様を実装する仮想マシン内で実行されます。 . Java コードを異なる方法で実装する多種多様な JVM があります (たとえば、このリストにあるもの: https://en.wikipedia.org/wiki/List_of_Java_virtual_machines )。各 JVM およびプロセッサ アーキテクチャはコードを異なる方法で実装できるため、正確な結果はそれらによって異なります。

そうは言っても、これらの演算子はすべて実際のコードと実質的に同一である必要があるという他の答えは正しいです。他の演算 (乗算、浮動小数点演算、より複雑な計算など) は、実行が単純ではないため、プロセッサ時間に非常に大きな影響を与えます。

于 2012-06-12T05:33:25.010 に答える
0

それらはすべて、Java バイトコードの 、 、 などの形式の単一のオペコードでありif_acmp<cond>if_icmp<cond>さまざまif<cond>な条件または異なるサイクル時間のいずれかで大幅に異なるオペコードがあったハードウェア アーキテクチャをすぐに思い出すことはできません。私が構築した 1 つまたは 2 つのインタープリターでは、 、 、および のみを実装<==>他の部分NOTは .

于 2012-06-12T05:41:39.690 に答える
0

ほとんどのハードウェア命令セットは、これらの比較を、比較の結果に応じた分岐が続く 2 つの命令として実行します。したがって、ほとんどのハードウェア上のほとんどの JVM では、<、<=、= >=、>、または != のいずれであっても、異なるフラグが設定された同じ 2 つの命令であっても、まったく違いはありません。

この質問を参照してください

もちろん、それは命令セットと、JVM の作成者とその C コンパイラがそれをどのように使用するかによって異なります。

于 2012-06-12T06:22:08.817 に答える