在Python中使用long和int的性能影响

5

我需要在Python中操纵64位的大数。目前我的代码运行在一个64位平台上,但有一小部分可能它会运行在32位平台上。因此,我更愿意使用long类型来表示我的数字。我知道使用long而不是int类型会对性能产生影响。那么这个影响有多严重呢?我将在这些数字上执行大量的除法和乘法,但结果都应该适合64位。


1
Python会自动处理这个问题,而且还可以处理任意大的数字,是不是很神奇? - Emil Lundberg
2
你可以使用timeit模块对你的代码进行性能分析。 - TJD
1
你正在使用哪个版本的Python? 如果你正在使用3.x版本,请查看:PEP 0237: 实质上,long类型重命名为int。也就是说,现在只有一个内置的整数类型,命名为int;但它大多数情况下的行为方式类似于旧的long类型。 - Yuushi
2
在Python 2中,您无法详细控制从“int”到“long”的升级过程,并且在Python 3中,您几乎无法控制这种神秘的“性能影响”。您认为可以对Python程序进行哪些更改以控制Python 2中的'int' vs.'long'? - S.Lott
我只能使用Python 2.6,但看起来我可以简单地使用“int”,自动提升会为我解决问题。谢谢! - VladLosev
2个回答

3
如果你要进行大量的数字计算,请查看“numpy”。

3
如果您的程序需要大量的数值计算,而且性能很重要,那么您应该对其进行性能分析,并让数字部分运行在本地代码中。您不必担心内部数字是Python“整数”还是“长整数”,因为Python 3已经删除了类型差异。
有几种方法可以实现这一点,可以使用numpy、cython、C扩展、使用pypy而不是标准cpython运行程序,甚至可以查看corepy - 但您不应该在纯Python中运行数值密集型任务,如果性能是一个问题的话。即使是最复杂的情况 - 创建一个C扩展,形式上只是执行计算的单个函数,也足够简单,以获得性能上的收益。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接