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

时间:2010-12-31 03:17:57

标签: python windows-7 64-bit x86-64

运行amd64构建的Python和扩展有什么好处? (很多扩展compiled for amd64 here。)我有一个i5处理器和Win7 64位,所以看起来它是合适的。但它听起来还有错误,测试版,不支持等等。

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

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

5 个答案:

答案 0 :(得分:21)

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

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

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

答案 1 :(得分:5)

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

答案 2 :(得分:5)

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

此外,如果您需要,也可以直接使用超过4GB的内存。

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

答案 3 :(得分:3)

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

一个小好处:

Python> sys.maxint
9223372036854775807

但是,我想如果有任何好处,我可以争论,但对于所有64位应用程序来说也是如此。

处理大量数据时,您将获得最大收益。

答案 4 :(得分:0)

我认为你可以通过SciPy和NumPy获得性能提升,因为当你向处理器添加更多位时,数字处理和计算会得到极大的改善。但我无法确定。

你总是可以并排运行64位和32位并进行一些比较,我有兴趣知道数字运算方面的测试结果。如果您运行相同版本的两者,只要您拥有两者所需的模块,代码就可以运行。