क्या एक बेहतर / नया C या C ++ कंपाइलर अधिक परफॉर्मेंट संकलित कोड का उत्पादन करता है? या वे केवल संकलन करते समय तेज / बेहतर प्रदर्शन करते हैं?


2

मैं स्वयं C या C ++ प्रोग्रामर नहीं हूं, लेकिन मैं अक्सर ऐसे सॉफ़्टवेयर का उपयोग करता हूं जिन्हें संकलित करने की आवश्यकता होती है या अन्यथा कुछ आर पैकेजों की तरह एक कंपाइलर पर निर्भर करता है।

यदि मैं एक नए / बेहतर संकलक का उपयोग करता हूं तो क्या वह सॉफ़्टवेयर वास्तव में बेहतर प्रदर्शन करेगा? उदाहरण के लिए, अभी मैं Clang के Mac OS X सिस्टम संस्करण का उपयोग करता हूं, और यह सुझाव दिया गया है कि मैं इसके बजाय बाद के संस्करण का उपयोग करता हूं। क्या सिर्फ संकलन के दौरान मुझे समय और स्मृति बचाने का सुझाव है? या यह वास्तव में अधिक कुशल संकलित सॉफ्टवेयर का उत्पादन करेगा?


1
"एसओ के अंतर्गत आता है" के रूप में मतदान करने वाले व्यक्ति के लिए: यह विकास से संबंधित सवाल नहीं है; यह उपयोगकर्ता के दृष्टिकोण से पूछ रहा है (ध्यान दें: कई ओएस और सॉफ्टवेयर पैकेज हैं जो उपयोगकर्ता को स्रोत से संकलन की उम्मीद करते हैं)। यह विषय से हटकर इतने पर होगा, और है विषय पर SU पर; घनिष्ठ कारण "संकलन" का उल्लेख करने की तुलना में कहीं अधिक बारीक हैं।
बॉब

1
@ थैंक यू। मैं वास्तव में मूल रूप से StackOverflow पर इसे लिखा था, और फिर इसके बजाय इसे यहाँ पोस्ट करने का निर्णय लिया
छायाकार

@ fixer1234 मैंने विशेष रूप से C और C ++ को शीर्षक और टैग
छायाकार

@ fixer1234 आप प्रश्न में बहुत दूर तक पढ़ रहे हैं। यदि उत्तर "वहाँ कोई अच्छा जवाब नहीं है" तो ऐसा हो
छायाकार

जवाबों:


3

यदि मैं एक नए / बेहतर संकलक का उपयोग करता हूं तो क्या वह सॉफ़्टवेयर वास्तव में बेहतर प्रदर्शन करेगा?

यह पूरी तरह से इस बात पर निर्भर करता है कि दिए गए रिलीज़ में कंपाइलर के कोड ऑप्टिमाइज़ेशन फीचर पर काम किया जाता है या नहीं।

उदाहरण के लिए, अभी मैं Clang के Mac OS X सिस्टम संस्करण का उपयोग करता हूं, और यह सुझाव दिया गया है कि मैं इसके बजाय बाद के संस्करण का उपयोग करता हूं।

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

क्या सिर्फ संकलन के दौरान मुझे समय और स्मृति बचाने का सुझाव है?

यह सुझाव ईमानदारी से 100% ओपिनियन आधारित लगता है। यदि आप उस व्यक्ति पर भरोसा करते हैं जिसने यह सुझाव दिया है तो आपको इसे लेना चाहिए।

मुझे कहना चाहिए कि एक संकलक, सॉफ्टवेयर है, और नए संस्करण नए बग पेश कर सकते हैं, जिसके परिणामस्वरूप अनुकूलन मार्ग में सबसे खराब प्रदर्शन होता है। आपको एक संतुलन की तलाश करनी चाहिए, ऐसा करने का सबसे अच्छा तरीका, हमेशा स्थिर रिलीज बिल्ड का उपयोग करना है।


अच्छा जवाब है, लेकिन यह उल्लेख करना उपयोगी होगा कि अक्सर बिना किसी कारण के आउट-ऑफ-बैंड को अपग्रेड करने के लिए एक बुरा विचार है, आपको अभी भी अपग्रेड करना चाहिए जो आधिकारिक ओएस रिलीज का हिस्सा हैं। इसके अलावा, कभी-कभी नए संकलक रिलीज वास्तव में प्रतिगमन का परिचय देते हैं (वे एक पुराने रिलीज की तुलना में कुछ कोड के अनुकूलन का एक बदतर काम कर सकते हैं )।
बॉब

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

@ रामध्वज: प्रश्न के अनुसार, ओपी संकलन कर रहा है।
फिक्सर 1234

@ रामदूत आपके पास यह पीछे की ओर है। मैं आमतौर पर अपने स्वयं के कोड को संकलित नहीं करता हूं (आर एक व्याख्या की गई भाषा है; मैं पायथन का भी उपयोग करता हूं), लेकिन मुझे कभी-कभी स्रोत से ऐड-ऑन पैकेज बनाने की आवश्यकता होती है, जो उन्हें उपयोग करने से पहले संकलित किया जाना चाहिए। मैं स्टेन नामक एक कार्यक्रम का भी उपयोग करता हूं जिसके लिए मुझे C ++ कोड संकलित करने की आवश्यकता है, यद्यपि स्वचालित रूप से C ++ कोड उत्पन्न होता है।
छायाकार

@ रामध्वज: मुझे प्रश्न करने में समस्या है, लेकिन आपका उत्तर अच्छा है। +1
फिक्सर 1234
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.