डेड कोड

From alpha
Revision as of 12:40, 18 March 2024 by Arti Shah (talk | contribs) (Arti Shah moved page मृत कोड to डेड कोड without leaving a redirect)

Jump to navigation Jump to search

डेड कोड शब्द की कई परिभाषाएँ हैं। कुछ लोग इस शब्द का उपयोग कोड (अर्थात मेमोरी में निर्देश) को संदर्भित करने के लिए करते हैं जिसे रन-टाइम पर कभी भी निष्पादित नहीं किया जा सकता है।[1][2][3] कंप्यूटर प्रोग्रामिंग के कुछ क्षेत्रों में, डेड कोड एक प्रोग्राम के स्रोत कोड में एक अनुभाग होता है जिसे निष्पादित किया जाता है लेकिन जिसका परिणाम कभी भी किसी अन्य गणना में उपयोग नहीं किया जाता है।[4][5] डेड कोड के निष्पादन से गणना समय और मेमोरी बर्बाद होती है।

हालांकि मृत गणना के परिणाम का उपयोग कभी नहीं किया जा सकता है, यह अपवाद प्रबंधन को बढ़ा सकता है या कुछ वैश्विक स्थिति को प्रभावित कर सकता है, इस प्रकार ऐसे कोड को हटाने से प्रोग्राम का आउटपुट बदल सकता है और अनपेक्षित सॉफ़्टवेयर बग आ सकता है। कंपाइलर ऑप्टिमाइज़ेशन आम तौर पर डेड-कोड हटाने के अपने दृष्टिकोण में रूढ़िवादी होते हैं यदि इस बारे में कोई अस्पष्टता है कि डेड कोड को हटाने से प्रोग्राम आउटपुट प्रभावित होगा या नहीं। प्रोग्रामर मेथड (कंप्यूटर प्रोग्रामिंग)#स्टेटिक तरीकों और/या इनलाइन फ़ंक्शन फ़ंक्शंस का अतिरिक्त उपयोग करके और लिंक-टाइम अनुकूलन के उपयोग को सक्षम करके इस मामले में कंपाइलर की सहायता कर सकता है।

उदाहरण

<सिंटैक्सहाइलाइट लैंग='सी'> int foo (int iX, int iY) { int iZ = iX/iY;

वापसी iX*iY; } </सिंटैक्सहाइलाइट>

उपरोक्त उदाहरण में, यद्यपि का विभाजन iX द्वारा iY की गणना की जाती है और इसका उपयोग कभी नहीं किया जाता है, जब शून्य से विभाजन होता है तो यह एक अपवाद फेंक देगा। इसलिए, मृत कोड को हटाने से प्रोग्राम का आउटपुट बदल सकता है।

विश्लेषण

डेड-कोड एलिमिनेशन संकलक अनुकूलन का एक रूप है जिसमें डेड कोड को प्रोग्राम से हटा दिया जाता है। डेड कोड विश्लेषण लाइव-वेरिएबल विश्लेषण, स्थैतिक प्रोग्राम विश्लेषण का एक रूप | स्थैतिक-कोड विश्लेषण और डेटा-प्रवाह विश्लेषण का उपयोग करके किया जा सकता है। यह अप्राप्य कोड विश्लेषण के विपरीत है जो नियंत्रण प्रवाह विश्लेषण | नियंत्रण-प्रवाह विश्लेषण पर आधारित है।

डेड-कोड उन्मूलन तकनीक अप्राप्य कोड उन्मूलन और निरर्थक कोड उन्मूलन के समान अनुकूलन की श्रेणी में है।

बड़े प्रोग्रामिंग प्रोजेक्ट्स में, कभी-कभी डेड कोड को पहचानना और खत्म करना मुश्किल होता है, खासकर जब पूरे मॉड्यूल डेड हो जाते हैं। परीक्षण मचान से यह प्रतीत हो सकता है कि कोड अभी भी लाइव है, और कभी-कभी, अनुबंध भाषा को कोड की डिलीवरी की आवश्यकता हो सकती है, भले ही कोड अब प्रासंगिक न हो।[6] कुछ एकीकृत विकास परिवेश (जैसे कि Xcode, Visual Studio 2010[7] और ग्रहण गैलीलियो[8]) संकलन चरण के दौरान मृत कोड का पता लगाने की क्षमता है।

जबकि अधिकांश अनुकूलन तकनीकें कार्यान्वयन में मृत कोड को हटाने की कोशिश करती हैं, आकार के लिए अनुकूलन के चरम रूपों में कभी-कभी जानबूझकर मृत कोड को पेश करना और ध्यान से आकार देना वांछनीय हो सकता है, जब यह अन्यथा असंबंधित कोड अनुभागों को एक साथ मोड़ने की अनुमति देता है (और इस तरह उन्हें कम करता है) संयुक्त आकार) ताकि अतिरिक्त कोड प्रभावी रूप से कोड के माध्यम से निष्पादन के पहले पथ को नुकसान नहीं पहुंचाएगा, लेकिन निष्पादन के वैकल्पिक पथों के लिए आवश्यक कार्यों को पूरा करने के लिए उपयोग किया जाता है, जिसके लिए कोड के अन्य अनुभाग मृत कोड बन सकते हैं। अधिक कार्यात्मक स्तर पर, इसे कृत्रिम रूप से हानिरहित/उपयोगी दुष्प्रभावों का परिचय और कोड की अतिरेक में कमी दोनों के रूप में देखा जा सकता है, लेकिन छोटे निर्देशों के उपयोग की अनुमति देने के लिए इसका उपयोग ऑपकोड स्तर तक भी किया जा सकता है। , जो मृत कोड के कारण होने वाले दुष्प्रभावों के ठोस परिचय के बिना कोड अनुक्रमों को मोड़ते समय संभव नहीं होगा।

यह भी देखें

संदर्भ


बाहरी संबंध