प्रदर्शन के बारे में सोच रहे हैं कि अनावश्यक है जब यह मापने के लिए बहुत आसान है:
$ python -mtimeit -s'class X(object):
> @property
> def y(self): return 23
> x=X()' 'x.y'
1000000 loops, best of 3: 0.685 usec per loop
$ python -mtimeit -s'class X(object):
def y(self): return 23
x=X()' 'x.y()'
1000000 loops, best of 3: 0.447 usec per loop
$
(मेरी धीमी गति से लैपटॉप पर - अगर आप क्यों 2 मामले माध्यमिक खोल संकेतों का भी नहीं है, क्योंकि मैं बनाया है यह पहली बार बैश में एक अप-तीर के साथ है, और यह लाइनबैक संरचना को दोहराता है लेकिन संकेत नहीं देता! -)।
तो जब तक कि आप ऐसे मामले में न हों जहां आप 200+ नैनोसेकंड जानते हों या इससे कोई फर्क नहीं पड़ता (एक तंग आंतरिक लूप जिसे आप अत्यंत अनुकूलित करने की कोशिश कर रहे हैं), आप संपत्ति दृष्टिकोण का उपयोग कर सकते हैं; यदि आप मूल्य प्राप्त करने के लिए कुछ गणना करते हैं, तो 200+ नैनोसेकंड निश्चित रूप से लिया गया कुल समय का एक छोटा अंश बन जाएगा।
मैं अन्य उत्तरों से सहमत हूं कि यदि गणना बहुत भारी हो जाती है, या आप कभी भी पैरामीटर चाहते हैं, तो एक विधि बेहतर है - इसी तरह, यदि आप कभी भी कॉल करने योग्य को कहीं भी छीनने की ज़रूरत है, तो मैं जोड़ूंगा लेकिन इसे बाद में कॉल करें, और अन्य फैंसी कार्यात्मक प्रोग्रामिंग चालें; लेकिन मैं प्रदर्शन बिंदु को मात्रात्मक रूप से बनाना चाहता था, क्योंकि timeit
इस तरह के माप को इतना आसान बनाता है! -)
स्रोत
2009-07-17 15:06:38
और यदि आप 'x' इंस्टेंस सृजन की गणना नहीं करते हैं, तो परिणाम भी करीब (प्रतिशत-वार) होते हैं, (मैंने iPython में '% timeit' जादू फ़ंक्शन का उपयोग किया): ' x = X();% timeit x.y' -> 1000000 लूप, 3: 211 एनएस प्रति लूप का सर्वश्रेष्ठ; 'एक्स = एक्स(); % timeit x.y() '-> 10000000 लूप, 3: 16 9 एनएस प्रति लूप का सर्वोत्तम –