2009-03-13 7 views
10

एक परिवर्तनीय नाम घोषित करना, इसके नाम की लंबाई कितनी (यदि बिल्कुल) प्रभाव है, तो आवेदन की कुल स्मृति होनी चाहिए? वैसे भी अधिकतम लंबाई है? या क्या हम अपने चर (और उदाहरण) को जितना चाहें उतना विस्तारित करने के लिए स्वतंत्र हैं?क्या आप किसी चर के नाम का उपयोग किसी अनुप्रयोग के स्मृति उपयोग पर कोई प्रभाव डालते हैं?

+0

+1 - मैं यह पूछने वाला था। IL – mauris

उत्तर

20

यह वास्तव में भाषा पर निर्भर करता है।

यदि आप सी ++ या सी का उपयोग कर रहे हैं, तो इसका कोई प्रभाव नहीं पड़ता है।

यदि आप एक व्याख्या की गई भाषा का उपयोग कर रहे हैं, तो आप स्रोत कोड को पास कर रहे हैं, इसलिए इसका नाटकीय प्रभाव हो सकता है।

यदि आप एक संकलित भाषा का उपयोग कर रहे हैं जो जावा या किसी भी .NET भाषाओं जैसे मध्यवर्ती भाषा में संकलित होता है, तो आमतौर पर परिवर्तनीय नाम, कक्षा के नाम, विधि नाम इत्यादि आईएल का हिस्सा हैं। लंबे विधि के नाम होने पर असर पड़ेगा। हालांकि, यदि आप बाद में एक obfuscator के माध्यम से चलाते हैं, यह दूर चला जाता है, क्योंकि obfuscator सब कुछ (आमतौर पर) बहुत छोटे नामों का नाम बदल जाएगा। यही कारण है कि obfuscation अक्सर प्रदर्शन प्रभाव देता है।

हालांकि, मैं दृढ़ता से लंबे, वर्णनात्मक चर/विधि/वर्ग नामों का उपयोग करने का सुझाव दूंगा। यह आपके कोड को समझने योग्य, रखरखाव करने योग्य और पठनीय बनाता है - लंबे समय तक, यह किसी भी मामूली perf से अधिक है। लाभ।

+0

+1 आईएल अनदेखा करने के लिए बहुत महत्वपूर्ण है। जावा, सी #, वीबी.Net वे हैं जिनके बारे में आप सोचते हैं, लेकिन यहां तक ​​कि पायथन का अर्थ नहीं है, यह आईएल का अपना रूप है ... –

+0

आईएल पर विचार करने के लिए –

+0

नाम आईएल का हिस्सा हो सकता है, लेकिन कम से कम .NET में, आईएल मशीन भाषा में JIT'ed है, तो फिर, कोई परिवर्तनीय नाम नहीं है। –

5

इसका संकलित भाषा में कोई प्रभाव नहीं पड़ता है।

0

संकलित भाषाओं में, लगभग निश्चित रूप से नहीं; सब कुछ एक प्रतीक तालिका में एक प्रतीक बन जाता है। व्याख्या की गई भाषाओं में, कुछ भी दुर्लभ अपवादों के साथ उत्तर भी नहीं है (उदाहरण के लिए पाइथन के कुछ पुराने संस्करणों में एक अंतर होगा)।

0

एमएसवीसी ++ परिवर्तनीय नामों को 255 वर्णों में छंटनी करता है। परिवर्तनीय नाम की लंबाई संकलित कोड आकार पर कोई प्रभाव नहीं पड़ता है।

0

जैसा कि दूसरों ने बताया है, संकलित नाम संकलित भाषाओं में गायब हो जाते हैं। मेरा मानना ​​है कि .NET में स्थानीय चर नामों को त्याग दिया जा सकता है। लेकिन आम तौर पर, एक व्याख्या की गई भाषा में भी, परिवर्तनीय नामों की स्मृति खपत नगण्य है, खासकर अच्छे परिवर्तनीय नामों के फायदे के प्रकाश में।

0

वास्तव में नियंत्रण और मास्टर पृष्ठों के लिए एएसपी.NET लंबे परिवर्तनीय नामों में जेनरेट किए गए HTML के आकार में जोड़ें। यह आउटपुट स्ट्रीम को बफर करने के लिए कुछ महत्वहीन अतिरिक्त मेमोरी जोड़ देगा, लेकिन नेटवर्क पर आपके अतिरिक्त भेजने वाले अतिरिक्त कुछ सौ बाइट्स में प्रभाव सबसे अधिक ध्यान दिया जाएगा।

0

पायथन में, नामों को कई सरल तालिकाओं में एकत्रित किया जाता है; प्रत्येक कोड ऑब्जेक्ट में प्रत्येक नाम बिल्कुल एक बार प्रकट होता है। नामों पर प्रदर्शन पर कोई प्रभाव नहीं पड़ता है।

सांख्यिकीय उद्देश्यों के लिए, मैंने एक 20 लाइन फ़ंक्शन देखा जो परियोजना यूलर समस्या 15 का समाधान था। इस फ़ंक्शन ने 2 9 2-बाइट कोड ऑब्जेक्ट बनाया। इसने नाम तालिका में 7 अलग-अलग नामों का इस्तेमाल किया। बाइट-कोड फ़ाइल के आकार को दोगुना करने के लिए आपको 41-वर्ण चर नामों का उपयोग करना होगा।

यह एकमात्र प्रभाव होगा - असाधारण बड़े नाम आपके मॉड्यूल के लिए लोड समय धीमा कर सकते हैं।