2

short32ビットシステムでsを使用する方が、sを使用するよりも非効率的であると聞きましたintintこれは64ビットシステムのs でも同じですか?

Pythonは最近(?)基本的にintsをマージしlong、基本的に単一のデータ型を持っていlongますよね?あなたがあなたのアプリを確信しているなら。その場合、64ビットでのみ実行されますが、Javaのすべてに長く使用することも考えられますか(おそらく良い考えです)?

4

2 に答える 2

2

Pythonlongの精度は任意であり、64ビットではありません。Python 3がに変更さlongれたintため、任意精度の整数型は1つだけになり、プログラマーの作業を大幅に節約できます。Javaのintは32ビット、longは64ビットです。64ビットプロセッサは、通常、64ビット整数で32ビットプロセッサよりも優れたパフォーマンスを発揮します。

64ビットプラットフォームで32ビット整数を使用することは、少なくともx64では高価ではありません。パフォーマンス上の理由から、Javaで32ビットから64ビットのintを選択したり、その逆を選択したりすることは意味がありません。1つの64ビット整数ではなく2つの32ビット整数を使用した場合は、何があっても遅くなります。同様に、32ビットを使用できたはずの64ビットを使用すると、一部のプラットフォームでは速度が低下します。つまり、問題のあるドメインに適したデータ型を使用してください。

于 2010-05-16T22:27:09.420 に答える
2

あなたがあなたのアプリを確信しているなら。その場合、64ビットでのみ実行されますが、Javaのすべてに長く使用することも考えられますか(おそらく良い考えです)?

悪い考え、IMO

int64ビットJVMの使用と使用に違いがあるとしても(これは非常に疑わしいlongと思います)、すべてに使用することを保証するために依存しているライブラリを含め、アプリケーション全体で十分に重要ではありません。 long

そして、いくつかの潜在的な問題があります:

  • 少なくともlong[]対に対しては、より多くのメモリを使用しますint[]
  • 32ビットプラットフォームで実行する必要がないという仮定が間違っていることが判明した場合は、後悔するでしょう。

(パフォーマンスに大きな違いがないと思う理由は、問題がある場合は、整列されていないint-32をフェッチして格納することです。しかし、そうであれば、JVM設計者は次のことを確認する可能性があります。 int-32フィールドは常に64ビットワードアドレスに配置されます。JVMは通常、32ビットアーキテクチャのint-8およびint-16でこれをすでに実行しています...)

于 2010-05-16T22:52:20.230 に答える