के रूप में फेबियन ने कहा, यह तेजी से होने के लिए मुश्किल है math.sqrt
। इसका कारण यह है कि यह सी लाइब्रेरी से सीपी लाइथ से संबंधित फ़ंक्शन को कॉल करता है।
from math import sqrt
sqrt के बाद के प्रत्येक कॉल नहीं है इसे गणित मॉड्यूल है, जो निष्पादन समय की बचत होती है में देखने के लिए होगा:
हालांकि, अगर आप चीजों विशेषता देखने की भूमि के ऊपर निकाल कर में तेजी लाने के कर सकते हैं:
print sqrt(2)
यहाँ धीमी करने के लिए संख्या के समय कर रहे हैं सबसे तेजी से, (पायथन 2.6.5, मैक ओएस एक्स 10.6.3): sqrt
**0.5
की तुलना में तेजी है:
[email protected] ~ % python -m timeit -s 'from math import sqrt; x = 2' 'sqrt(x)'
1000000 loops, best of 3: 0.207 usec per loop
[email protected] ~ % python -m timeit -s 'x = 2' 'x**0.5'
1000000 loops, best of 3: 0.226 usec per loop
[email protected] ~ % python -m timeit -s 'import math; x = 2' 'math.sqrt(x)'
1000000 loops, best of 3: 0.268 usec per loop
ध्यान दें कि समय परीक्षण परिवर्तनीय के वर्ग रूट की गणना करता है। वे 2**0.5
की तरह एक निरंतर गणना नहीं है, क्योंकि 2**0.5
पूर्व -calculated है, CPython में:
import dis
def f():
return 2**0.5
print dis.dis(f)
प्रिंट
2 0 LOAD_CONST 3 (1.4142135623730951)
3 RETURN_VALUE
जहां लगातार नाव sqrt (2) = 1.414 देखें ...
यदि आप संख्याओं के सरणी में हेरफेर करते हैं, तो न्यूमपी sqrt
एक अन्य उत्तर में उल्लिखित तरीका है।
sqrt() एस धीमा है। क्या आपको वास्तव में 20k विशिष्ट जड़ें खोजने की ज़रूरत है, या आप लुकअप टेबल या कैश परिणामों का उपयोग कर सकते हैं? –