최근에 파이썬의 매우 간단한 성능 테스트를 위해 timeit 모듈을 사용했습니다. 그 결과 실제로 나를 기절 시켰습니다. x=x+x
에 의해 소모 된 시간은 약 입니다. 125 시간은 x+x
또는 y=x+x,
입니다. 나는 누군가가 나에게 이것에 대한 단서를 줄 것을 정말로 희망한다. 아마도 나는 timeit을 잘못 사용 했을까? 감사! 파이썬 x = x + x는 y = x + x보다 120 배 느립니다. 왜?
y=x+x;x=y
가
x=x+x
만큼 느린 것을 알 제발 ...하지만
x=x+47
최대한 빨리
x+x
로 testBasicOps()테스트 케이스 = "패스", 시간 경과입니다 : 0.001487secs
testcase = "x = 47", 시간 경과 : 0.002424secs
testcase = "x = 94", 시간 경과 : 0.002423secs
테스트 케이스 = "X = 47 * 2", 시간 경과 : 0.002423secs
테스트 케이스 = "X + X", 시간 경과 : 0.003922secs
테스트 케이스 = "X * 2" 시간 경과 : 0.005307secs
테스트 케이스 = "X = X + X", 시간 경과 : 0.497974secs
테스트 케이스 = "X = X * 2", 시간 경과 : 0.727506secs
,691,363,210테스트 케이스 = "X = X + 47", 시간 경과 : 0.005770secs
테스트 케이스 = "X = 47 + X", 시간 경과 : 0.004442secs
테스트 케이스 = "X + = X" 시간 경과 : 0.498920secs
테스트 케이스 = "Y = X + X", 시간 경과 : 0.006327secs
= "Y = X * 2", 시간 경과 0.004102secs테스트 케이스
테스트 케이스 = "Y = X + X
X = Y", 시간 경과 : 0.499644secs
테스트 케이스 = "X + X
Y = X", 시간 경과 : 0.004948secs
테스트 케이스는 = "X + X
X = Y", 시간 경과 : 0.005126secs
테스트 케이스 123,414,= "Y = 10X = Y", 시간 경과 = "패스"0.003351secs
테스트 케이스, 시간 경과 : 0.001487secs
내가 사용하는 코드 : 당신은 시간의 x=x+x
수천을 계산할 때, x
가 매우 큰됩니다
import timeit
import numpy as npy
def testBasicOps():
timeitSetup="""
x=47
y=0
"""
testCases=['pass','x=47',\
'x=94','x=47*2'\
,'x+x','x*2'\
,'x=x+x','x=x*2'\
,'x=x+47','x=47+x'\
,'x+=x','y=x+x'\
,'y=x*2','y=x+x\nx=y'\
,'x+x\ny=x','x+x\nx=y'\
,'y=10\nx=y']
minT=[]
tests=[]
for i in testCases:
tests.append(timeit.Timer(i,setup=timeitSetup))
minT.append(npy.mean(tests[-1].repeat(10,int(1e5))))
print 'testcase=\"%s\", time lapse:%fsecs'%(i,minT[-1])
def main():
print "#"*10
print "testBasicOps()"
testBasicOps()
if __name__ == '__main__':
main()
어떤 버전의 파이썬을 사용하고 있습니까? 나는 이것이 casevh 노트가 버전 문제와 결합 된 것에 기인한다고 느낀다. 나는 당신이 2.6 이하인 것 같아. – inspectorG4dget
나는 코드가 매우 "Java-ish"이고 카운터 파이썬이 직관적이라고 언급 할 것이다 ... 당신은 줄 연속을 필요로하지 않는다 ... ','를 사용하여리스트 요소를 분리하고 거기에서부터 나아 간다. .. 예. ''pass ','x = 47 ', \''\ '는 불필요합니다. –
"@ inspectorG4dget : 어떤 버전의 파이썬을 사용하고 있습니까?" sys.version = 2.7.2+ (default, Oct 4 2011, 20:06:09) [GCC 4.6.1] 감사합니다. 특히 @casevh! 문제를 해결하려면 "x = 47;"을 추가하십시오. 각 테스트마다. 확실히 내가 예상했던대로 timeit 모듈의 사용 문제입니다 : D – Wang