[c#] डीबग और रिलीज बिल्ड के बीच प्रदर्शन अंतर


Answers

  1. हां, कई प्रदर्शन अंतर हैं और ये वास्तव में आपके सभी कोड पर लागू होते हैं। डीबग बहुत कम प्रदर्शन अनुकूलन करता है, और रिलीज मोड बहुत अधिक करता है;

  2. केवल कोड जो DEBUG निरंतर पर निर्भर करता है, रिलीज निर्माण के साथ अलग-अलग प्रदर्शन कर सकता है। इसके अलावा, आपको कोई समस्या नहीं दिखानी चाहिए।

DEBUG स्थिरांक पर निर्भर फ्रेमवर्क कोड का एक उदाहरण है Debug.Assert() विधि, जिसमें विशेषता [Conditional("DEBUG)"] परिभाषित है। इसका मतलब है कि यह DEBUG स्थिरता पर भी निर्भर करता है और इसे रिलीज बिल्ड में शामिल नहीं किया गया है।

Question

मुझे स्वीकार करना होगा, आमतौर पर मैंने अपने कार्यक्रम में डीबग और रिलीज कॉन्फ़िगरेशन के बीच स्विचिंग को परेशान नहीं किया है, और मैंने आमतौर पर डीबग कॉन्फ़िगरेशन के लिए जाने का विकल्प चुना है, भले ही प्रोग्राम वास्तव में ग्राहकों के स्थान पर तैनात किए जाते हैं।

जहां तक ​​मुझे पता है, इन कॉन्फ़िगरेशन के बीच एकमात्र अंतर यदि आप इसे मैन्युअल रूप से नहीं बदलते हैं तो यह है कि डीबग को DEBUG निरंतर परिभाषित किया गया है, और रिलीज के अनुकूलन कोड की जांच की गई है।

तो मेरे प्रश्न वास्तव में दो गुना है:

  1. क्या इन दो विन्यासों के बीच बहुत अधिक प्रदर्शन अंतर हैं। क्या कोई विशिष्ट प्रकार का कोड है जो यहां प्रदर्शन में बड़े अंतर पैदा करेगा, या वास्तव में यह महत्वपूर्ण नहीं है?

  2. क्या कोई भी प्रकार का कोड है जो डीबग कॉन्फ़िगरेशन के तहत ठीक चलाएगा जो रिलीज कॉन्फ़िगरेशन के तहत असफल हो सकता है, या आप निश्चित हो सकते हैं कि डीबग कॉन्फ़िगरेशन के तहत परीक्षण और ठीक काम करने वाला कोड रिलीज़ कॉन्फ़िगरेशन के तहत भी ठीक काम करेगा।




मेरे अनुभव में, रिलीज मोड से बाहर आने वाली सबसे बुरी चीज अस्पष्ट "रिलीज बग" है। चूंकि आईएल (इंटरमीडिएट भाषा) को रिलीज मोड में अनुकूलित किया गया है, इसलिए बग की संभावना मौजूद है जो डीबग मोड में प्रकट नहीं होती। इस समस्या को कवर करने वाले अन्य SO प्रश्न हैं: रिलीज़ संस्करण में बग के सामान्य कारण डीबग मोड में मौजूद नहीं हैं

यह मेरे साथ एक या दो बार हुआ है जहां एक सरल कंसोल ऐप डीबग मोड में पूरी तरह से ठीक होगा, लेकिन सटीक एक ही इनपुट दिया गया है, रिलीज मोड में त्रुटि होगी। इन बगों को डीबग करना बेहद मुश्किल है (रिलीज मोड की परिभाषा के अनुसार, विडंबनात्मक रूप से)।




  • मेरा अनुभव यह रहा है कि मध्यम आकार या बड़े अनुप्रयोग रिलीज बिल्ड में अधिक उत्तरदायी हैं। इसे अपने आवेदन के साथ आज़माएं और देखें कि यह कैसा महसूस करता है।

  • एक चीज जो आपको रिलीज बिल्ड के साथ काट सकती है वह यह है कि डीबग बिल्ड कोड कभी-कभी दौड़ की स्थिति और अन्य थ्रेडिंग-संबंधित बग को दबा सकता है। अनुकूलित कोड के परिणामस्वरूप निर्देश पुनर्गठन और तेजी से निष्पादन कुछ दौड़ की स्थिति को बढ़ा सकता है।




    **Debug Mode:**
    Developer use debug mode for debugging the web application on live/local server. Debug mode allow developers to break the execution of program using interrupt 3 and step through the code. Debug mode has below features:
   1) Less optimized code
   2) Some additional instructions are added to enable the developer to set a breakpoint on every source code line.
   3) More memory is used by the source code at runtime.
   4) Scripts & images downloaded by webresource.axd are not cached.
   5) It has big size, and runs slower.

    **Release Mode:**
    Developer use release mode for final deployment of source code on live server. Release mode dlls contain optimized code and it is for customers. Release mode has below features:
    More optimized code
    Some additional instructions are removed and developer can’t set a breakpoint on every source code line.
   1) Less memory is used by the source code at runtime.
   2) Scripts & images downloaded by webresource.axd are cached.
   3) It has small size, and runs fast.
   4) Scripts & images downloaded by webresource.axd are cached.
   5) It has small size, and runs fast.



Links