在64位操作系统中在64位CPU上运行X86-64 Python是否有好处?

end*_*ith 24 python 64-bit x86-64 windows-7

运行amd64构建的Python和扩展有什么好处?(这里为amd64编译了很多扩展.)我有一个i5处理器和Win7 64位,所以看起来它是合适的.但它听起来也像是有缺陷,测试版,不支持等.

它实际上是否提供了性能优势?在哪些方面?我将运行SciPy,NumPy等.我偶尔会遇到32位Python的"内存不足"错误,而我的机器有4 GiB的RAM.

如果不存在64位版本的软件包,是否可以在64位Python基础上安装win32软件包?

Mar*_*wis 23

使用64位Python的主要原理是您可以访问超过2GB的主内存,例如,如果您有大的dicts,列表或长字符串.这要求您在系统中实际拥有那么多内存才能实用.

第二个影响是,在AMD64模式下,CPU具有更多寄存器,因此生成的代码可能运行得稍快(对于整数运算).

Windows上64位模式的Python当然不是测试版或不受支持.它可能是错误的,但只有当你确实拥有非常大的数据结构时.64位Python已经存在了大约15年(虽然不是在Windows上).

  • 更多的寄存器会不会加速任何使用寄存器的东西,而不仅仅是整数运算? (2认同)
  • @endolith:由于附加寄存器是整数寄存器,因此广泛使用浮点运算的代码无法从扩展中受益.当然,你很少有纯粹使用浮点运算的代码,所以任何代码都可能会受益 - 除非它已经单独处理了x86寄存器. (2认同)
  • @endolith 和 Martin:x86-64 的 XMM 寄存器(16 个)是原来的两倍,整数寄存器是 16 个。更好的是,ABI 指定在 XMM 寄存器中而不是在传统 x87 寄存器中传递/返回 FP 参数。将 SSE2 作为架构的必需部分非常好,这意味着所有程序都可以使用它而无需检查 CPUID 功能位。 (2认同)

Ign*_*ams 6

与其他每个64位程序一样的优势:大量的进程空间,以及对更多和更大寄存器的访问(至少对于VM和C模块).但不,你需要找到64位版本的C模块.


Kei*_*ith 5

我已经在 Linux 上运行 64 位 Python 多年了。没问题,它不是马车。这包括 numpy. 我不会担心的。

一个小好处:

Python> sys.maxint
9223372036854775807
Run Code Online (Sandbox Code Playgroud)

但是,我想人们可能会争论这是否有任何好处,但一般来说,所有 64 位应用程序也是如此。

在处理非常大量的数据时,您可以获得最大的好处。


jsb*_*eno 5

通常使用64位代码获得的正常收益.我没有找到任何最近的基准测试,但在x64推出时,代码在64位上的运行速度比在x86硬件上的32位运行速度快30% - 这个差距肯定会随着时间的推移以某种方式降低,但是仍然可能更快.

此外,如果您需要,您还可以透明地使用超过4GB的内存.

但请注意,64位的速度增益是由于32位传统的ABI非常可靠:在32位运行的核心i7具有与1987年80386芯片中相同的4个通用寄存器(以及其他几个).从70年代到8086的寄存器1:1.64位abi引入了更多(实际)通用寄存器,这使得速度增益更快.否则,64位代码只需要花费两倍的高速缓存,这使得它在其他架构(如PPC)中实际上比32位代码慢.