web-dev-qa-db-ja.com

X86-64 Pythonを64ビットOSの64ビットCPUで実行することには利点がありますか?

Pythonと拡張機能のAMD64ビルドを実行することにはどのような利点がありますか?(多くの拡張機能 ここでAMD64用にコンパイルされています 。)私はi5プロセッサとWin764を持っています-ビットなので、適切なようですが、バグがある、ベータ版、サポートされていないなどのようにも聞こえます。

それは実際にパフォーマンス上の利点を提供しますか?どのエリアで? SciPy、NumPyなどを実行します。32ビットPythonで、マシンに4 GiB of羊。

パッケージの64ビットバージョンが存在しない場合、win32パッケージを64ビットPythonベースにインストールできますか?

26
endolith

64ビットPythonを使用する主な理由は、たとえば、大きなdict、リスト、または長い文字列がある場合に、2GBを超えるメインメモリにアクセスできることです。これには、実際にシステム内のその量のメモリが実用的です。

2番目の効果は、AMD64モードでは、CPUに多くのレジスタがあるため、結果のコードがわずかに高速に実行される可能性があることです(整数演算の場合)。

Windowsで64ビットモードのPythonは、確かにベータ版でもサポートされていないものでもありません。バグがあるかもしれませんが、実際に非常に大きなデータ構造を持っている場合に限ります。 64ビットPythonは約15年になります(ただし、Windowsではありません)。

23

他のすべての64ビットプログラムと同じ利点:多くのプロセススペース、およびますます多くのレジスタへのアクセス(少なくともVMおよびCモジュールの場合))。 -Cモジュールのビットバージョン。

通常は、64ビットコードを使用することで得られます。最近のベンチマークは見つかりませんでしたが、x64の導入時点では、コードはx86ハードウェアの32ビットよりも64ビットで最大30%高速に実行される可能性があります。このギャップは、当時からの最適化によって確かに低下していますが、それでもおそらく速いでしょう。

また、必要に応じて4GBを超えるメモリを透過的に使用することもできます。

ただし、64ビットでの速度の向上は32ビットのレガシーABIによるものであることに注意してください。32ビットで実行されているコアi7には、1987年の80386チップにあったものと同じ4つの汎用レジスタ(および他のいくつか)があります。 70年代から8086のレジスタに1:1。 64ビットのabiは、より多くの(実際の)汎用レジスタを導入し、それが速度の向上につながります。それ以外の場合、64ビットコードは単にキャッシュメモリの2倍を消費するため、PPCなどの他のアーキテクチャでは、実際には32ビットコードよりも低速になります。

5
jsbueno

私はすでにLinux上で64ビットPythonを何年も実行しています。問題はありません。バグはありません。これにはnumpyも含まれます。心配する必要はありません。

1つの小さな利点:

Python> sys.maxint
9223372036854775807

ただし、それにメリットがあるかどうかは議論の余地があると思いますが、一般的にすべての64ビットアプリについても同じことが言えます。

非常に大量のデータを処理するときに最大のメリットが得られます。

4
Keith

プロセッサにビットを追加すると数値の処理と計算が大幅に改善されるため、SciPyとNumPyを使用するとパフォーマンスが向上すると思います。しかし、私にはわかりません。

いつでも64ビットと32ビットを並べて実行し、いくつかの比較を行うことができます。数値計算側でのテストの結果を知りたいと思います。また、両方の同じバージョンを実行している場合、両方に必要なモジュールがあれば、コードは両方で正常に実行されます。

0
David Hewitt