if True
पाइथन में if 1
से धीमा क्यों है? if True
if 1
से तेज़ नहीं होना चाहिए?यदि सच है तो 1 से कम धीमा क्यों है?
मैं timeit
मॉड्यूल सीखने की कोशिश कर रहा था। मूल बातें के साथ शुरू, मैंने कोशिश की इन:
>>> def test1():
... if True:
... return 1
... else:
... return 0
>>> print timeit("test1()", setup = "from __main__ import test1")
0.193144083023
>>> def test2():
... if 1:
... return 1
... else:
... return 0
>>> print timeit("test2()", setup = "from __main__ import test2")
0.162086009979
>>> def test3():
... if True:
... return True
... else:
... return False
>>> print timeit("test3()", setup = "from __main__ import test3")
0.214574098587
>>> def test4():
... if 1:
... return True
... else:
... return False
>>> print timeit("test4()", setup = "from __main__ import test4")
0.160849094391
मैं इन बातों से उलझन में हूँ:
- this question में श्री सिल्वेन Defresne से प्रतिक्रिया के अनुसार, सब कुछ परोक्ष एक
bool
पहले में बदल जाती है और फिर चेक किया। तोif True
if 1
से धीमा क्यों है? test3
test1
से धीमा क्यों है, भले हीreturn
मान अलग हैं?- प्रश्न 2 की तरह, लेकिन
test4
test2
से थोड़ा क्यों है?
नोट: मैं timeit
तीन बार भाग गया और परिणामों का औसत लिया, फिर कोड के साथ यहां समय पोस्ट किया।
यह प्रश्न माइक्रो बेंचमार्किंग (जो मैंने इस उदाहरण में किया था, लेकिन मैं यह भी समझता हूं कि यह बहुत बुनियादी है) से संबंधित नहीं है, लेकिन एक 'ट्रू' चर की जांच क्यों स्थिर की तुलना में धीमी है।
मुझे लगता है कि आपके परीक्षण बहुत छोटे हैं। और तीन रनों का औसत पर्याप्त नहीं है: पी – keyser
मैं समझता हूं :) यहां तक कि टेस्ट केस भी सोचने के लिए बहुत बुनियादी है।हालांकि, हमें कहीं भी सही शुरू करने की आवश्यकता है :) – thiruvenkadam
संभावित डुप्लिकेट [माइक्रोबेंमार्क को कब तक चलने की आवश्यकता है?] (Http://stackoverflow.com/questions/2857470/how-long-does-a-microbenchmark-need- टू रन) –