6
में निर्माण के लिए परिभाषित करता है

मैं वर्तमान में उपयोग निम्नलिखित पूर्वप्रक्रमक को परिभाषित करता है, और विभिन्न ऑप्टिमाइज़ेशन सेटिंग:सी ++ एक 'बेहतर' रिलीज मोड वी.एस.

  • WIN32_LEAN_AND_MEAN
  • VC_EXTRALEAN
  • NOMINMAX
  • _CRT_SECURE_NO_WARNINGS
  • _SCL_SECURE_NO_WARNINGS
  • _SECURE_SCL = 0
  • _HAS_ITERATOR_DEBUGGING = 0

मेरा प्रश्न क्या अन्य बातों के साथी SOers उपयोग करते हैं, जोड़, परिभाषित आदेश वी.एस. सी से एक रिलीज मोड निर्माण प्राप्त करने के लिए, ऐसा है ++ (2008,2010) संभव के रूप में performant होने के लिए?

बीटीडब्ल्यू, मैंने पीजीओ इत्यादि की कोशिश की है, यह थोड़ा सा मदद करता है लेकिन जीसीसी के साथ समानता के लिए कुछ भी नहीं आता है, मैं भी धाराओं का उपयोग नहीं कर रहा हूं, सी ++ मैं सी की तरह इसके बारे में बात कर रहा हूं लेकिन इसका उपयोग कर रहा हूं टेम्पलेट्स और STL एल्गोरिदम आदि

यह अब खड़ा के रूप में बहुत ही सरल कोड खंडों तुलना wrt प्रदर्शन में पीला जब क्या जीसीसी कहते हैं पर पैदा करता है की तुलना में एक बराबर 86 मशीन चल लिनक्स (2.6+ गिरी) 02.

का उपयोग कर साइड-नोट: मेरा मानना ​​है कि बहुत से मुद्दे सीधे एमएस द्वारा प्रदान किए गए एसटीएल संस्करण (डिनकम) से संबंधित हैं। क्या लोग वीएस सी ++ के साथ एसटीएलपोर्ट आदि का उपयोग कर अनुभवों पर विस्तृत जानकारी दे सकते हैं।

+0

आपको सी/सी ++, ऑप्टिमाइज़ेशन और संभवतः सी/सी ++, कोड जनरेशन के तहत अपनी प्रोजेक्ट प्रॉपर्टीज में निर्दिष्ट सेटिंग्स को भी सूचीबद्ध करना चाहिए, क्योंकि ये संकलक अनुकूलन को बहुत प्रभावित कर सकते हैं। –

+0

उनमें से अधिकतर प्रदर्शन पर कोई प्रभाव नहीं डालते हैं, लेकिन केवल चेतावनियों को हटाते हैं या संकलन को गति देते हैं। वैसे भी, मेरे अनुभव में, वीसी ++ और जीसीसी कोड उत्पन्न करते हैं जो समान रूप से अच्छी तरह से प्रदर्शन करता है। आप कितना बड़ा अंतर देख रहे हैं, और वास्तव में प्रत्येक कंपाइलर को कैसे लागू किया जाता है? – jalf

+0

यह प्रदर्शन से संबंधित नहीं है, लेकिन आपको 'प्रतिबंधित' पर विचार करना चाहिए।एक Win32 ऐप के लिए माइक्रोसॉफ्ट के एसडीएल से एच '। – 0xC0000022L

उत्तर

1

मैं नहीं दिख रहा है कि कैसे के शामिल किए जाने:

_CRT_SECURE_NO_WARNINGS 
_SCL_SECURE_NO_WARNINGS 

..gives आप एक बेहतर या अधिक performant निर्माण। आप जो कुछ कर रहे हैं वह एमएस सीआरटी बहिष्कृत कार्यों के बारे में चेतावनियों को अक्षम कर रहा है। यदि आप ऐसा कर रहे हैं क्योंकि आप जानते हैं कि आप क्या कर रहे हैं और प्लेटफ़ॉर्म अज्ञेय कोड की आवश्यकता है, अन्यथा मैं पुनर्विचार करूँगा।

अद्यतन: इसके अलावा संकलक केवल इतना ही कर सकता है। मैं दांव दूंगा कि यदि आप संकलन और लिंकिंग चरण से छोटे प्रतिशत (यदि वह) लाभ प्राप्त करने की कोशिश करने के बजाए अपने मौजूदा हॉटस्पॉट को मापने और तय करने के लिए अधिक प्रदर्शन कोड प्राप्त करेंगे।

UPDATE2: जब संकलन रिलीज वैसे भी बनाता MSDN के अनुसार _HAS_ITERATOR_DEBUGGING नहीं किया जा सकता। WIN32_LEAN_AND_MEANVC_EXTRALEAN (और शायद NOMINMAX हालांकि प्रदर्शन अक्षम करने का मुख्य कारण नहीं है) आपको कुछ प्रदर्शन बढ़ावा दे सकता है हालांकि बाकी सभी के पास संदिग्ध मूल्य है। आपको सही फास्ट कोड (शायद - और मुझे शायद तनाव हो) थोड़ा तेज लेकिन अधिक जोखिम प्रवण कोड का पक्ष लेना चाहिए।

+1

मैं पूरी तरह से सहमत हूं, लेकिन मुझे यह जोड़ना होगा कि कलाकार एक शब्द नहीं है। –

+2

एक अधिक उपयुक्त शब्द की अनुपस्थिति में रीनेजेड भाषाविद क्या करना है? आखिरकार शब्दकोशों को पकड़ लिया जाएगा। :-) (जेफ बोल्टर के अनुसार वैसे भी) – Konrad

+2

@ चार्ल्स: Dictionary.com के मुताबिक, यह है। यह एक कलाकार है जैसा कि एक सूचनार्थी एक सूचनार्थी है। हालांकि, मुझे लगता है कि यह अवधारणा को व्यक्त करने के लिए उपयुक्त शब्द से अधिक है और, आखिरकार, अंग्रेजी शब्दकोश अनुवांशिक के बजाय वर्णनात्मक हैं। –