2011-03-22 282 views
2

我在使用類似處理器的32位Windows 7和64位Windows Server 2008之間移動應用程序時遇到性能問題。我編寫了一個簡單的程序來測試內存分配性能以查看差異。它表明,在64位上創建列表幾乎需要32位窗口的10倍。在64位上使用32位和2.6.6上的python 2.6.5。什麼可能導致這個問題?我寫了一個'c'程序來做同樣的事情,它顯示了64位服務器的運行速度。那麼到底發生了什麼問題?Python速度32位64位Windows問題

#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 
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 

有一些突出的問題,Python和內存peformance在64位的Windows?

64視窗2008 R2服務器設置

4的CPU,內存16GB,20GB C驅動器,10GB/s的網絡至強X5570 @ 2.93GHz的

32個視窗7 PC

2 CPU,2GB內存,500GB C盤,1 Gb/s網絡Core 2 Duo @ 3.00ghz

+1

小心使用更好的時機,比如http://docs.python.org/library/timeit.html。謝謝 – eat 2011-03-22 06:27:07

+0

我剛剛在你的三個Windows 7 64位版Python 2.6.5上使用timeit。我不得不添加一個del,以便它不是實際創建的快捷方式。我的時代與你的32位時代相匹配。你的電腦有多快,你有多少內存? – 2011-03-22 15:56:59

回答

2

問題是由在Windows服務器上使用virtural機器軟件引起的。

+0

你有關於此的更多信息? – HAL9000 2011-11-29 00:57:42

+0

@BenSapp我真的沒有任何細節,爲什麼。但是運行相同的代碼而沒有虛擬服務器軟件的性能對64位和32位python來說幾乎是一樣的。我在windows server 2010 64上使用VMware公司的東西。 – Martlark 2011-11-29 22:55:19

+0

有趣。我在VMWare(免費版)上的Server 2008 R2 VM上。我問的原因是我一直在嘲弄django(OSQA)上python 2.7大約一個星期,試圖讓它表現更好。當我點擊一頁時,CPU上的CPU通常會達到50%,平均響應時間爲400-700ms。當我在Win7 64(32位Python)上運行本機時,它對CPU和正常響應時間(〜130ms)幾乎沒有影響。相當不同! – HAL9000 2011-11-30 00:09:53

2

我不知道爲什麼它會這麼長,但是你應該多花一點時間,因爲在t他的例子程序在64位模式下分配內存的兩倍,就像32位模式一樣,因爲python在列表中使用32/64位指針。

當您仍在使用32位數據類型時,這可能與C不同。

+0

是的,這可能是因爲他只是跨越了一些導致GC運行的閾值。 – Gabe 2011-03-22 06:18:51

+0

@Gabe - 或將數據集推出L3緩存。 – atzz 2011-03-22 07:45:36

+0

@atzz:他正在創建一個30M整數的列表,在32位機器上是120MB。這是一個三級緩存的地獄! :) – Gabe 2011-03-22 07:47:25

0

我有另一個Python 2.7和64位的問題。我運行一個程序,它在32位Python中給一臺較小的計算機帶來內存溢出。我感興趣的是,如果我的大內存將被使用。當然是的。最高可達10 GB並掛機。我必須切換電源並重新啓動計算機。

+1

我在Windows Server 2010上使用了高達92千兆字節的64位Python。這是服務器刀片可以支持的最大值,因此我不得不更改我的代碼以使用更少的內存。 10千兆字節的使用情況讓我感到煩惱。 – Martlark 2012-01-10 00:50:18