16

Sunが 64 ビット バージョンの Java を提供していることに気付きました。32 ビット版よりもパフォーマンスが優れていますか?

4

8 に答える 8

19

ほとんどの場合、64ビットは遅くなります。

HotSpot FAQからSunを引用するには:

64ビットプラットフォームで実行されているアプリケーションとSPARC上の32ビットプラットフォームを比較した場合のパフォーマンスの違いは、64ビットVMに移行すると10〜20%程度低下します。AMD64およびEM64Tプラットフォームでは、アプリケーションにアクセスするポインターの量に応じて、この差は0〜15%の範囲になります。

詳細はリンクにあります。

于 2009-02-26T13:04:06.283 に答える
12

ワークロードと、「実行」があなたにとって何を意味するかを定義します。

これは、長年のパフォーマンスオタクとして、私にとって一種の厄介な問題です。特定の変更が「パフォーマンスが向上する」かどうかは、何よりもまず、ワークロード、つまりプログラムに何を要求しているかに依存します。

64ビットJavaは、多くの場合、計算負荷が大きいものでパフォーマンスが向上します。Javaプログラムは、古典的に、I/O負荷とネットワーク負荷が高くなります。64ビットと32ビットは問題ではないかもしれませんが、オペレーティングシステムは通常問題ありません。

于 2009-02-26T04:09:57.520 に答える
3

1.2 GBをはるかに超える容量が必要な場合は、64ビットのパフォーマンスが向上します。一部のプラットフォームでは最大3GBを取得できますが、たとえば4〜384 GBが必要な場合は、64ビットが唯一のオプションです。

Azulは384GBのJVMをサポートしていると思いますが、もっと高くできるかどうか誰か知っていますか?

于 2009-02-26T20:01:41.570 に答える
2

いくつかの改善点:64ビットでdoubleを使用する操作は、32ビットでfloatを使用する場合と同じように高速に計算され、intと比較して64ビットでlongを使用する操作も同様に高速に計算されます。

したがって、大量のlongを含むコードを実行している場合は、実際に改善が見られる可能性があります。

于 2009-02-26T12:45:53.350 に答える
2

ほとんどの CPU アーキテクチャでは、32 ビットは 64 ビットよりも高速であり、他の条件はすべて同じです。64 ビット ポインターは、転送に 32 ビットの 2 倍の帯域幅を必要とします。ただし、x64 命令セット アーキテクチャは x86 よりも少し正気度が高いため、最終的には高速になります。通常、長い型の取り扱い量は少ないです。

もちろん、Java の実装にも依存します。コンパイラだけでなく、実装にも違いがあるかもしれません。たとえば、NIO は 64 ビット ポインターを想定しています。また、Sun はこれまでx64 向けのより高速なサーバーHotSpot実装のみを出荷していたことにも注意してください。つまり、 を指定する-d64と、クライアントからサーバーの HotSpot (IIRC) にも切り替えることになります。

于 2009-02-26T12:26:57.560 に答える
-2

はい、特にコードが64ビットプラットフォームをターゲットにするように構築されている場合はそうです。

于 2009-02-26T04:10:25.583 に答える