在使用类似处理器的32位Windows 7和64位Windows Server 2008之间移动应用程序时,我遇到了性能问题。我写了一个简单的程序来测试内存分配性能以查看差异。它表明,在64上制作列表几乎是32位窗口的10倍。使用32上的python 2.6.5和64上的2.6.6。可能导致问题的原因是什么?我写了一个小'c'程序来做同样的事情,它表明64位服务器更快。出了什么问题?
#silly python memory allocation test
from datetime import datetime
import random
d = datetime.now()
listo = [1] * 300000
del listo
print datetime.now()-d
d = datetime.now()
listo = [1] * 3000000
del listo
print datetime.now()-d
d = datetime.now()
listo = [1] * 30000000
print datetime.now()-d
结果是32
0:00:00.002000
0:00:00.024000
0:00:00.166000
结果在64
0:00:00.031000
0:00:00.156000
0:00:02.672000
在64位窗口上是否存在Python和内存性能方面的一些突出问题?
64 Windows 2008 R2服务器设置
4个CPU,16GB内存,20GB C盘,10GB / s网络Xeon X5570 @ 2.93GHz
32 Windows 7件
2个CPU,2GB内存,500GB C驱动器,1 Gb / s网络Core 2 duo @ 3.00ghz
答案 0 :(得分:2)
我不知道它为什么会这么长,但是你应该期待更多的时间,因为在这个例子中程序在64位模式下分配了两倍的内存,因为在32位模式下,因为python使用32 /列表中的64位指针。
当您仍在使用32位数据类型时,这在C中可能会有所不同。
答案 1 :(得分:2)
问题是由在Windows服务器上使用虚拟机软件引起的。
答案 2 :(得分:0)
我在Python 2.7和64位上遇到了另一个问题。我运行一个程序,它在32位Python中在较小的计算机上给内存溢出。我对我的大RAM是否会被使用感兴趣。当然是。最高可达10 GB,机器挂起。我不得不切换电源并重新启动计算机。