बहुत पहले समय आप import goo
कहीं से भी (अंदर या बाहर एक समारोह), goo.py
(या अन्य आयात योग्य फार्म) भरी हुई है और sys.modules['goo']
मॉड्यूल वस्तु इस प्रकार बनाया को तैयार है। कार्यक्रम के एक ही भाग के भीतर कोई भविष्य का आयात (फिर से, चाहे किसी फ़ंक्शन के अंदर या बाहर) sys.modules['goo']
देखें और इसे उचित दायरे में goo
पर बैरनाम करें। ताना लुकअप और नाम बाध्यकारी बहुत तेज संचालन हैं।
मान लिया जाये कि बहुत पहले import
पूरी तरह से वैसे भी कार्यक्रम के समय से अधिक परिशोधित हो जाता है, "उचित दायरे" मॉड्यूल-स्तर हो रही है, आदि goo.this
में से प्रत्येक के उपयोग, goo.that
है, जिसका अर्थ है दो dict लुकअप - goo
के लिए एक और के लिए एक विशेषता नाम। इसे "फ़ंक्शन लेवल" होने के कारण फ़ंक्शन के प्रति रन (यहां तक कि डिक्शनरी लुकअप भाग से भी तेज़) की एक अतिरिक्त स्थानीय-परिवर्तनीय सेटिंग का भुगतान किया जाता है, लेकिन प्रत्येक goo.this
के लिए एक स्पोकल लुकअप (स्थानीय-चरणीय लुकअप के लिए इसका आदान-प्रदान) (आदि) पहुंच, मूल रूप से इस तरह के लुकअप लेने के समय को कम करने।
हम कुछ नैनोसेकंड्स के बारे में बात कर रहे हैं, इसलिए यह शायद ही एक सार्थक अनुकूलन है। किसी फ़ंक्शन के भीतर import
होने का संभावित रूप से पर्याप्त लाभ यह है कि प्रोग्राम के दिए गए भाग में उस फ़ंक्शन की आवश्यकता नहीं हो सकती है, उदाहरण के लिए, यह कार्य त्रुटियों, विसंगतियों और सामान्य रूप से दुर्लभ स्थितियों से संबंधित है; यदि ऐसा है, तो किसी भी रन को कार्यक्षमता की आवश्यकता नहीं है, यह आयात भी नहीं करेगा (और यह केवल माइक्रोसॉन्ड की बचत नहीं है, न केवल नैनोसेकंड्स), केवल वही रन जो कार्यक्षमता की आवश्यकता होती है (मामूली लेकिन मापनीय) कीमत का भुगतान करेगी।
यह अभी भी एक अनुकूलन है जो बहुत चरम स्थितियों में केवल सार्थक है, और ऐसे कई अन्य हैं जिन्हें मैं इस तरह से माइक्रोसेकंड को निचोड़ने की कोशिश करने से पहले विचार करता हूं।
स्रोत
2010-06-22 16:36:27
कोई गति लाभ नहीं है (कॉलिंग 'आयात' बहुत महंगा है, भले ही मॉड्यूल पहले ही लोड हो)। यदि आप स्पीड लाभ चाहते हैं, तो यह तेज़ है (यदि आप मॉड्यूल को कम से कम 4-5 बार एक्सेस करते हैं) तो मॉड्यूल को स्थानीय वैरिएबल में असाइन करने के लिए केवल अपनी कार्यक्षमता में करते हैं, और फिर उस स्थानीय चर के माध्यम से इसे एक्सेस करें (क्योंकि स्थानीय परिवर्तनीय लुकअप बहुत तेज हैं)। –
(http://us.pycon.org/2010/conference/schedule/event/71/ पर वीडियो में 26:30 तक फास्ट फॉरवर्ड करें यदि आप एक दिलचस्प उदाहरण चाहते हैं कि फ़ंक्शन में हास्यास्पद रूप से खराब आयात कैसे हो सकता है) –
@ निक: यह सुनते समय, ऐसा प्रतीत होता है कि जब भी आप कोशिश कर रहे हैं और जांच कर रहे हैं कि यह आयात किया गया है या नहीं, तब से बार-बार आयात करना धीमा है। क्या आप कह रहे हैं कि फ़ंक्शन के बाहर इसे आयात करें और इसे वैश्विक चर के रूप में सेट करें और फ़ंक्शन के अंदर वैश्विक चर पकड़ लें? –