2011-03-22 2 views
2

비슷한 프로세서를 사용하는 32 비트 Windows 7 및 64 비트 Windows Server 2008간에 응용 프로그램을 이동할 때 성능 문제가 발생했습니다. 그 차이를보기 위해 메모리 할당 성능을 테스트하는 간단한 프로그램을 작성했습니다. 그것은 64에서 목록을 만드는 것은 32 비트 창보다 거의 10 배 길다는 것을 보여줍니다. 32에서 Python 2.6.5를 사용하고 64에서 2.6.6을 사용합니다. 무엇이 문제를 일으킬 수 있습니까? 나는 똑같은 일을하기 위해 약간의 'c'프로그램을 작성했으며 64 비트 서버가 더 빨리 진행되는 것을 보여 주었다. 무슨 일이 생길까요? 64Python 속도 32 v 64 비트 Windows 관련 문제

0:00:00.031000 
0:00:00.156000 
0:00:02.672000 

0:00:00.002000 
0:00:00.024000 
0:00:00.166000 

결과 32

#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 

결과 64 비트 윈도우에 대한 몇 가지 뛰어난 파이썬 문제 및 메모리 peformance이 있습니까?

(64)의 Windows 2008 R2 Server 설치

4 CPU 16 기가 바이트 메모리, 20기가바이트 C 드라이브 10GB를/s의 네트워크 제온 X5570의 @ 2.93GHz에는

32 윈도우 7 PC

2 CPU, 2GB 메모리, 500GB C 드라이브, 1Gb/s 네트워크 코어 2 듀오 @ 3.00ghz

+1

http://docs.python.org/library/timeit.html과 같은 더 나은 타이밍을 신경 써야합니다. 감사합니다 – eat

+0

저는 Windows 7 64 비트에서 Python 2.6.5를 사용하여 세 가지 예제에 대해 timeit을 사용했습니다. 델을 추가하여 실제 생성을 지름길로 만들지 않아야했습니다. 내 시간은 32 비트 시간과 잘 맞습니다. 컴퓨터 속도는 얼마이며 RAM 용량은 얼마나됩니까? –

답변

2

Windows 서버에서 virtural machine 소프트웨어를 사용하면 문제가 발생합니다.

+0

이것에 대한 자세한 정보가 있습니까? – HAL9000

+0

@BenSapp 이유에 대한 자세한 내용은 없습니다. 그러나 가상 서버 소프트웨어 성능없이 동일한 코드를 실행하는 것은 64 비트 및 32 비트 Python에서 거의 동일했습니다. Windows server 2010 64에서 VMware 기업용 제품을 사용하고 있습니다. – Martlark

+0

흥미 롭습니다. VMWare (무료 버전)의 Server 2008 R2 VM입니다. 내가 물어 보는 이유는 내가 더 나은 성능을 얻으려고 일주일 정도 Python 2.7 장고 (OSQA)에 대한 내 머리를 두드리는되었습니다. 내가 페이지를 쳤을 때 CPU는 일반적으로 VM에서 50 %로 급증하고 평균 응답 시간은 400-700ms입니다.Win7 64 (32 비트 파이썬)에서 네이티브를 실행할 때 CPU 및 괜찮은 (~ 130ms) 응답 시간에는 거의 영향을 미치지 않습니다. 확실히 차이! – HAL9000

2

왜 그렇게 오래되는지는 모르겠지만, 그의 예제에서는 프로그램이 32 비트 모드에서와 같이 64 비트 모드에서 메모리의 두 배를 할당합니다. 파이썬은 32/64 비트 포인터를 목록에 사용하기 때문입니다.

32 비트 데이터 유형을 계속 사용하는 경우 C에서 다를 수 있습니다.

+0

예, GC를 실행시키는 임계 값을 넘었을 수도 있습니다. – Gabe

+0

@Gabe - 또는 L3 캐시에서 데이터 세트를 푸시합니다. – atzz

+0

@atzz : 그는 32 비트 컴퓨터에서 120MB 인 30M 정수의 목록을 만듭니다. 그것은 L3 캐시 중 하나입니다! :) – Gabe

0

파이썬 2.7과 64 비트에 또 다른 문제점이있었습니다. 32 비트 Python에서 작은 컴퓨터에서 메모리 오버 플로우를 발생시키는 프로그램을 실행합니다. 내 큰 RAM을 사용한다면 관심이있었습니다. 그리고 확실히 그랬습니다. 최대 10GB까지 컴퓨터가 끊어졌습니다. 전원 공급 장치를 전환하고 컴퓨터를 다시 시작해야했습니다.

+1

저는 윈도우 서버 2010에서 64 비트 파이썬으로 최대 92 기가 바이트를 사용했습니다. 서버 블레이드가 지원할 수있는 최대 메모리는 메모리를 적게 사용하도록 코드를 변경해야한다는 것입니다. 10 기가 바이트의 사용량은 나에게 어떤 문제가 생겼습니다. – Martlark

관련 문제