त्वरित एक; क्या मैं यह सोचने में सही हूं कि 'कॉन्स्ट के रूप में' एक विधि को स्ट्रिंग पास करने से 'तार' के रूप में स्ट्रिंग को पार करने से अधिक ओवरहेड शामिल है? कंपाइलर को स्ट्रिंग की प्रतिलिपि बनाने के लिए डेल्फी मिल जाएगी और फिर स्ट्रिंग पैरामीटर को कॉन्स्ट के रूप में घोषित किया गया है, तो प्रतिलिपि पास करें, है ना?डेल्फी; पास स्ट्रिंग्स बनाम गुजर स्ट्रिंग्स का प्रदर्शन बनाम
प्रश्न का कारण थोड़ा कठिन है; हमारे पास विरासत डेल्फी 5 उपयोगिता है जिसका दिन वास्तव में गिना जाता है (प्रतिस्थापन विकास में है)। यह स्ट्रिंग प्रसंस्करण की एक बड़ी मात्रा करता है, जो अक्सर विभिन्न कार्यों और प्रक्रियाओं के बीच 1-2 केबी तारों को पार करता है। कोड के दौरान, मानकों को पार करने के लिए CONST या VAR का उपयोग करने का 'सही' अवलोकन (हाथ में नौकरी के आधार पर) का पालन किया गया है। हम केवल कुछ 'त्वरित जीत' की तलाश में हैं जो नए संस्करण तैयार होने तक हमें ज्वार करने के लिए निष्पादन समय से कुछ माइक्रोसेकंड दाढ़ी दे सकते हैं। हमने डिफॉल्ट डेल्फी 5 से फास्टएमएम में मेमोरी मैनेजर को बदलने का विचार किया, और हमने यह भी सोचा कि क्या तारों को पार करने के तरीके को बदलने में लायक है - क्योंकि कोड कॉन्स के रूप में पारित तारों के साथ ठीक काम कर रहा है, हम नहीं करते हैं एक समस्या देखें यदि हमने उन घोषणाओं को var में बदल दिया - उस विधि के भीतर कोड स्ट्रिंग को बदलने वाला नहीं है।
लेकिन क्या वास्तव में वास्तविक शर्तों में कोई अंतर आएगा? (कार्यक्रम वास्तव में इन 1kb + ish तारों पर बड़ी मात्रा में प्रसंस्करण करता है; कई सौ स्ट्रिंग एक मिनट में चोटी के समय)। फिर से लिखने में इन तारों को ऑब्जेक्ट्स/क्लास वेरिएबल्स में रखा जा रहा है, इसलिए उन्हें वास्तव में उसी तरह से कॉपी/पास नहीं किया जा रहा है, लेकिन विरासत कोड में यह बहुत पुराना स्कूल 'पास्कल है।
स्वाभाविक रूप से हम कार्यक्रम के एक समग्र भाग को देखने के लिए देखेंगे कि हमने क्या अंतर बनाया है, लेकिन वास्तव में यह कोशिश करने में कोई बात नहीं है कि अगर हम पहले उदाहरण में स्ट्रिंग-पासिंग कैसे काम करते हैं, तो हम स्पष्ट रूप से गलत हैं!
भी देखें: [? स्थिरांक लकीर का फकीर बना या तर्कसंगत के उपयोग है] (http://stackoverflow.com/questions/5844904/is-the-use -of-const-dogmatic-or-rational) – NGLN