निम्नलिखित कोड (here से, परीक्षण की संख्या में वृद्धि के साथ) पर विचार करें:इस कोड के लिए पायथन 3.1 2.6 से धीमा क्यों है?
from timeit import Timer
def find_invpow(x,n):
"""Finds the integer component of the n'th root of x,
an integer such that y ** n <= x < (y + 1) ** n.
"""
high = 1
while high ** n < x:
high *= 2
low = high/2
while low < high:
mid = (low + high) // 2
if low < mid and mid**n < x:
low = mid
elif high > mid and mid**n > x:
high = mid
else:
return mid
return mid + 1
def find_invpowAlt(x,n):
"""Finds the integer component of the n'th root of x,
an integer such that y ** n <= x < (y + 1) ** n.
"""
low = 10 ** (len(str(x))/n)
high = low * 10
while low < high:
mid = (low + high) // 2
if low < mid and mid**n < x:
low = mid
elif high > mid and mid**n > x:
high = mid
else:
return mid
return mid + 1
x = 237734537465873465
n = 5
tests = 1000000
print "Norm", Timer('find_invpow(x,n)', 'from __main__ import find_invpow, x,n').timeit(number=tests)
print "Alt", Timer('find_invpowAlt(x,n)', 'from __main__ import find_invpowAlt, x,n').timeit(number=tests)
अजगर 2.6 (Python 2.6.5 (r265:79063, Apr 16 2010, 13:57:41) [GCC 4.4.3] on linux2
) का उपयोग करना, बार सूचित कर रहे हैं:
Norm 9.869
Alt 9.53973197937
हालांकि, एक ही मशीन पर अजगर 3.1 (Python 3.1.2 (r312:79147, Apr 15 2010, 15:35:48) [GCC 4.4.3] on linux2
) का उपयोग कर, समय है:
Norm 28.4206559658
Alt 26.8007400036
क्या किसी को पता है कि क्यों इस कॉड ई पायथन 3.1 पर तीन गुना धीमी गति से चलता है?
कोई रेप्रो: python3.1 2.6 की तुलना में तेजी के बारे में 30% की मेरी मशीन पर है। – SilentGhost
धन्यवाद। आप कौन सा ओएस चला रहे हैं? मुझे उबंटू 10.04 64-बिट पर उपर्युक्त समय मिलता है। – user200783
उसी सिस्टम के 32-बिट संस्करण – SilentGhost