26

हमारे सी # रिहाई कोड की ज्यादातर के साथ 'कोड अनुकूलित करें' विकल्प बंद बनाया गया है। मेरा मानना ​​है कि यह रिलीज मोड में बनाए गए कोड को अधिक आसानी से डीबग करने की अनुमति देना है।लाभ का निर्माण

यह देखते हुए कि हम बैकएंड वेब सेवाओं से कनेक्ट होते हैं, (यानी विशेष रूप से प्रोसेसर-गहन अनुप्रयोग नहीं) तो क्या होगा यदि किसी भी तरह के प्रदर्शन हिट की उम्मीद की जा सकती है?

और किसी विशेष मंच बदतर प्रभावित होने की संभावना है? उदाहरण के लिए। बहु प्रोसेसर/64 बिट।

+0

मैं इस भ्रम रन देखा है पुराने दुकानों में _lot_ में जो अभी भी सी/सी ++ संस्कृति के साथ फंस गए हैं क्योंकि वे (दावा) नई प्रौद्योगिकियों में स्थानांतरित करने की कोशिश कर रहे हैं। –

+0

@ ग्रेग डी - दिलचस्प, मैंने सोचा होगा कि सी ++ संस्कृति ऑप्टिमाइज़ेशन पसंद करेगी - या यह आपके लिए क्या नहीं है? –

+1

@ जीटी: सी ++ संस्कृति जिसे मैंने ऑप्टिमाइज़ेशन और "फास्ट कोड" पसंद करने के लिए सबसे अधिक बार _claims_ में चलाया है, लेकिन ऐसे अधिकांश दावे नए या अलग किसी भी चीज के अंधविश्वास और तर्कहीन डर पर आधारित हैं। मैं इनकार नहीं करता हूं कि जिस संस्कृति का मैं जिक्र कर रहा हूं वह असफल है, लेकिन मुझे लगता है कि यह इस विशेष दुकान के बाहर भी व्यापक है।उन सभी लोगों की संख्या, जो इसके विपरीत सभी सबूतों के बावजूद, जोर देते हैं कि _their_ C++ कोड में कुछ उचित रूप से लिखित सी # कोड के लिए बेहतर perf विशेषताओं हैं, उदाहरण के लिए, आश्चर्यजनक है। मैंने सुना है "मैं अपनी खुद की याददाश्त का प्रबंधन करूंगा, बहुत धन्यवाद" बहुत बार। –

उत्तर

13

पूरी जानकारी http://blogs.msdn.com/jaybaz_ms/archive/2004/06/28/168314.aspx पर उपलब्ध हैं।

संक्षेप में ...

प्रबंधित कोड में, क्रम में घबराना लगभग सभी अनुकूलन करता है। इस झंडे से उत्पन्न आईएल में अंतर बहुत छोटा है।

+5

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

2

अनुकूलन संकलक द्वारा किया काफी कम स्तर होते हैं और अपने उपयोगकर्ताओं के अनुभव प्रभावित नहीं होना चाहिए।

आप अपने आवेदन पर अनुकूलन अंदाजा लगाना चाहते हैं, तो बस एक गैर अनुकूलित और एक अनुकूलित निर्माण प्रोफ़ाइल और परिणामों की तुलना।

+0

मैंने देखा है कि डिबगर्स मौजूद होने पर लाइनों को छोड़ दें। वीएस 2013 और 15 में यह वैसे भी! कभी-कभी मैं इसे डीबगिंग उद्देश्यों के लिए स्थानीय रूप से बंद कर देता हूं। – arviman

6

वास्तव में, वहाँ एक अंतर है, कभी कभी काफी महत्वपूर्ण है। क्या वास्तव में प्रदर्शन को प्रभावित कर सकते हैं (क्योंकि यह कुछ ऐसा है जो पूरी तरह से JIT की देखभाल नहीं करता है):

  • अनावश्यक स्थानीय चर (यानी, बड़ा ढेर प्रत्येक कॉल के लिए फ्रेम)
  • बहुत सामान्य सशर्त निर्देश, JIT तब्दील हो उन्हें काफी सरल तरीके से।
  • अनावश्यक शाखाओं (यह भी एक JIT द्वारा अच्छी तरह से सेवा नहीं - सब के बाद, यह सब स्मार्ट अनुकूलन करने के लिए बहुत ज्यादा समय नहीं है)

    तो, आप कुछ संख्यात्मक कर रहे हैं - अनुकूलन पर बारी । अन्यथा आप बिल्कुल कोई फर्क नहीं देखेंगे।

26

आप अकेले व्यक्ति हैं जो "प्रदर्शन हिट" प्रश्न का उत्तर दे सकते हैं। इसे दोनों तरीकों से आज़माएं, प्रदर्शन को मापें, और देखें कि क्या होता है। हिट भारी हो सकती है या यह कोई भी नहीं हो सकता है; कोई भी इसे पढ़ नहीं जानता है कि आपके लिए "विशाल" का अर्थ है एक माइक्रोसेकंड या बीस मिनट।

आप क्या अनुकूलन सी # संकलक द्वारा किया जाता है में रुचि रखते हैं - बल्कि घबराना से - जब अनुकूलन स्विच पर है, देखें:

http://blogs.msdn.com/ericlippert/archive/2009/06/11/what-does-the-optimize-switch-do.aspx

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