2013-01-06 13 views
10

क्या Debug को Release बनाम जनता के निर्माण के साथ कोई सुरक्षा या प्रदर्शन समस्या है?डीबग बनाम .NET के अनुकूलन में रिलीज (उपयोगकर्ताओं को वितरित करते समय चिंताओं)

अधिकांश समय मैं डीबग फ़ोल्डर (आवश्यक निर्भरताओं के साथ) में .exe फ़ाइल को पैक करता हूं और इसे उपयोगकर्ताओं को देता हूं।

क्या किसी अन्य को वितरित करने के लिए एक से अधिक पसंद करने का कोई कारण है?

+0

यह भी देखें [प्रदर्शन-अंतर-बीच-डीबग-एंड-रिलीज-बिल्ड्स? Lq = 1] (http://stackoverflow.com/questions/4043821/performance-differences-between-debug-and-release-builds ? lq = 1) – nawfal

उत्तर

8

कोई सुरक्षा समस्या नहीं है जिसे मैं सोच सकता हूं। निश्चित रूप से एक प्रदर्शन मुद्दा है, आपके असेंबली के डीबग बिल्ड में एक विशेषता (डिबग्रेबल एट्रिब्यूट) है जो हमेशा जिटर ऑप्टिमाइज़र को कोड को अनुकूलित करने से रोक देगा। यह चल रहे कार्यक्रम के perf पर एक बड़ा अंतर कर सकते हैं। जिटर द्वारा निष्पादित अनुकूलन this answer में प्रलेखित हैं।

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

वीबीएनईटी के लिए विशिष्ट, डीबग बिल्ड को शिपिंग करने से आपके प्रोग्राम को आउटऑफमेमरी अपवाद के साथ क्रैश हो सकता है जब यह आपके उपयोगकर्ता की मशीन पर डीबगर संलग्न किए बिना चलाया जाता है। यह WeakReferences पर रिसाव के कारण विफल रहता है, जिसे संपादन + जारी किया जाता है ताकि कक्षाओं का ट्रैक रखा जा सके जिसमें WithEvents कीवर्ड के साथ ईवेंट हैंडलर हो।

यदि आपको जिटर ऑप्टिमाइज़र द्वारा उत्पादित परफ एन्हांसमेंट की आवश्यकता नहीं है और VB.NET असेंबली नहीं भेजते हैं तो चिंता करने के लिए बहुत कुछ नहीं है।

9

हां, निश्चित रूप से - दोनों सुरक्षा और प्रदर्शन प्रभाव हैं।

डीबग बिल्ड में रिलीज बिल्ड की तुलना में अधिक जानकारी होती है और कई कंपाइलर अनुकूलन डीबग बिल्ड के लिए बंद होते हैं।

यहां Debug/Release difference भी देखें।


वहाँ एक अन्य की तुलना में अधिक पसंद करते हैं करने के लिए किसी भी कारण हैं वितरित किया जाना?

हां। यदि आप एक तेज बाइनरी चाहते हैं जिसे अनुकूलन के साथ संकलित किया गया है, तो release का उपयोग करें।

+2

हंसेलमैन को यह बहुत गलत लगता है (सामान्य रूप से), डिफ़ॉल्ट रिलीज बिल्ड वास्तव में डीबग प्रतीकों उत्पन्न करता है। यह किसी भी तरह से इस प्रश्न के लिए बहुत प्रासंगिक नहीं है, वे कुछ भी प्रभावित नहीं करते हैं और आप सिर्फ पीडीबीएस नहीं भेजते हैं। –

+0

@ हंसपैसेंट - इसके लिए धन्यवाद। मैंने सोचा कि प्रतीक केवल पीडीबीएस में थे और यह पोस्ट में थोड़ा अजीब था। – Oded

संबंधित मुद्दे