मुझे यह सवाल इसलिए मिला क्योंकि मैं एक सवाल करना चाहता था कि अगर कोई नेस्टेड फ़ंक्शन का उपयोग करता है तो प्रदर्शन प्रभाव क्यों होता है। मैंने क्वाड कोर 2.5 गीगाहर्ट्ज इंटेल i5-2530M प्रोसेसर के साथ विंडोज नोटबुक पर पायथन 3.2.5 का उपयोग करके निम्नलिखित कार्यों के लिए परीक्षण चलाए।
def square0(x):
return x*x
def square1(x):
def dummy(y):
return y*y
return x*x
def square2(x):
def dummy1(y):
return y*y
def dummy2(y):
return y*y
return x*x
def square5(x):
def dummy1(y):
return y*y
def dummy2(y):
return y*y
def dummy3(y):
return y*y
def dummy4(y):
return y*y
def dummy5(y):
return y*y
return x*x
मैंने निम्न 20 बार, वर्ग 1, वर्ग 2 और वर्ग 5 के लिए भी मापा:
s=0
for i in range(10**6):
s+=square0(i)
और निम्नलिखित परिणाम मिले
>>>
m = mean, s = standard deviation, m0 = mean of first testcase
[m-3s,m+3s] is a 0.997 confidence interval if normal distributed
square? m s m/m0 [m-3s ,m+3s ]
square0 0.387 0.01515 1.000 [0.342,0.433]
square1 0.460 0.01422 1.188 [0.417,0.503]
square2 0.552 0.01803 1.425 [0.498,0.606]
square5 0.766 0.01654 1.979 [0.717,0.816]
>>>
square0
कोई नेस्टेड फ़ंक्शन नहीं है, square1
एक नेस्टेड फ़ंक्शन है, square2
दो नेस्टेड फ़ंक्शन हैं और square5
पांच नेस्टेड फ़ंक्शन हैं। नेस्टेड फ़ंक्शन केवल घोषित किए जाते हैं, लेकिन कॉल नहीं किए जाते हैं।
इसलिए यदि आपने किसी फ़ंक्शन में 5 नेस्टेड फ़ंताशन को परिभाषित किया है जिसे आप कॉल नहीं करते हैं, तो फ़ंक्शन का निष्पादन समय एक नेस्टेड फ़ंक्शन के बिना फ़ंक्शन का दोगुना है। मुझे लगता है कि नेस्टेड फ़ंक्शन का उपयोग करते समय सतर्क रहना चाहिए।
इस उत्पादन को उत्पन्न करने वाले पूरे परीक्षण के लिए पायथन फ़ाइल को आइडोन पर पाया जा सकता है ।