C Vs C ++ बनाम C ++ 14 (ए टाइम रनिंग तुलना)

प्रोग्रामिंग करते समय, कभी-कभी आप ऐसी स्थिति में फंस गए होंगे जब आपके पास C और C ++ या C ++ 14 में उस प्रश्न को करने का विकल्प होगा, तो निर्णय लेने का समय चल रहा है और परिवर्तन के लिए अनुकूल होने के लिए कार्यक्रम की क्षमता भविष्य । यहाँ C ++, C ++ 14 में C पर बढ़त है क्योंकि इसकी लाइब्रेरी में सुपर पूर्वनिर्धारित कार्य हैं जिन्हें मानक टेम्पलेट लाइब्रेरी कहा जाता है, जिन्हें STL के नाम से जाना जाता है, जो सामान्य प्रोग्रामिंग डेटा संरचना और सूची, स्टैक जैसे फ़ंक्शन प्रदान करने के लिए C ++ टेम्पलेट कक्षाओं का एक सेट है। , सरणियाँ, आदि। यह कंटेनर कक्षाओं, एल्गोरिदम और पुनरावृत्तियों का एक पुस्तकालय है, जो एक क्लिक पर प्रोग्रामर को विभिन्न डेटा संरचनाएं प्रदान करके समय की बचत करता है।

C और C ++ के बीच मुख्य अंतर यह है कि C एक प्रक्रियात्मक प्रोग्रामिंग भाषा है और कक्षाओं और वस्तुओं का समर्थन नहीं करता है, जबकि C ++ प्रक्रियात्मक और वस्तु उन्मुख प्रोग्रामिंग भाषा दोनों का एक संयोजन है; इसलिए C ++ को एक संकर भाषा कहा जा सकता है।

अब इस बिंदु पर आते हुए, आपने सुना होगा कि C ++, C से धीमी है, लेकिन क्या आपने आंकड़े देखे हैं? कार्यक्रम में मामूली संशोधन करने के बाद हम C ++ प्रोग्राम को एक ही समय में चला सकते हैं या कभी-कभी C में लिखे एक संबंधित प्रोग्राम से भी तेज कर सकते हैं। यहाँ मैंने बाइनरी सर्च पर 2 प्रश्न लिए हैं और फिर उन्हें C और C ++ और C ++ 14 में कोडित किया है और फिर उनके चलने के समय की तुलना की है।

यदि आप आमतौर पर C ++ में Cin / Cout का उपयोग कर रहे हैं तो निम्न संशोधन काफी मददगार हो सकता है। बस इसे कार्यक्रम की शुरुआत में शामिल करें और इसे मुख्य रूप से उपयोग करें और आप जाने के लिए अच्छे हैं।

आप पा सकते हैं कि यह यहाँ क्या करता है।

Q1। साबुन रहस्य

यह एक सामान्य द्विआधारी खोज प्रश्न है जिसमें क्यू प्रश्न दिए गए हैं और हमें n तत्वों और इसकी जटिलता आईडी O (Q * लॉग (N)) पर कई बार बाइनरी खोज संख्या है जहां N सरणी में तत्वों की संख्या नहीं है।

आप यहाँ समाधान पा सकते हैं।

जब इसे कोड करना और इसे बड़े परीक्षण मामलों पर चलाना है तो मुझे यही मिला है।

G ++ 5.4.0 का उपयोग करके Q1 का समय चल रहा है

आप स्पष्ट रूप से देख सकते हैं कि C, C ++ 14 की तुलना में बहुत तेज है, लेकिन ध्यान देने वाली बात यह है कि जब उस संशोधन (बूस्ट) का उपयोग किया जाता है, तो यह स्पष्ट रूप से देखा जा सकता है कि C ++ 14 और C ++ अपने निष्पादन समय में C को बेहतर बनाता है (मामले में) बड़े परीक्षण मामले)।

Q2। खेल विकास शुरू

यह एक आसान-मध्यम प्रश्न है जिसमें एन-पंक्तियों और एम कॉलम के साथ 2-डी सरणी पर एन बाइनरी खोज करना शामिल है और फिर प्रत्येक पंक्ति में प्राप्त उत्तर का न्यूनतम खोजना जो हमारा अंतिम उत्तर है। जटिलता O (Nlog (M)) होती है।

समाधान यहाँ पाया जा सकता है।

अब इसे 3 अलग-अलग भाषाओं में कोडित करना यहाँ है जो मुझे मिला है:

G ++ 5.4.0 का उपयोग कर Q2 का रनिंग टाइम

यहाँ भी एक स्पष्ट रूप से देख सकता है कि C, C ++ 14 से बेहतर है लेकिन उस संशोधन का उपयोग करते हुए C ++ C से तेज है।

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

संकलक भी एक महत्वपूर्ण भूमिका निभाता है। उनमें से दो G ++ 5.4.0 और CLANG हैं। एक कंपाइलर एक कंप्यूटर प्रोग्राम (या कार्यक्रमों का एक सेट) है जो एक प्रोग्रामिंग भाषा (स्रोत भाषा) में लिखे गए स्रोत कोड को दूसरी कंप्यूटर भाषा (लक्ष्य भाषा) में बदल देता है, जिसमें बाद वाले को अक्सर बाइनरी फॉर्म होता है जिसे ऑब्जेक्ट कोड के रूप में जाना जाता है। जो कंपाइलर इस काम को तेजी से कर सकता है वह बेहतर होगा।

जीसीसी के प्रो

1. जीसीसी उन भाषाओं का समर्थन करता है जो क्लैग का लक्ष्य नहीं है, जैसे कि जावा, एडा, फोरट्रान, गो, आदि।

2. जीसीसी कई भाषा एक्सटेंशन का समर्थन करता है, जिनमें से कुछ क्लैंग द्वारा लागू नहीं किए जाते हैं। उदाहरण के लिए, C मोड में, GCC नेस्टेड फ़ंक्शंस का समर्थन करता है और इसमें स्ट्रेंथ में VLAs की अनुमति देने वाला एक्सटेंशन होता है।

कंग के प्रो

  1. क्लैंग बहुत तेज़ है और जीसीसी की तुलना में बहुत कम मेमोरी का उपयोग करता है।
  2. C ++ के लिए Clang का समर्थन कई तरीकों से GCC की तुलना में अधिक आज्ञाकारी है।
  3. क्लैंग कई भाषा एक्सटेंशन का समर्थन करता है, जिनमें से कुछ जीसीसी द्वारा कार्यान्वित नहीं किए जाते हैं। उदाहरण के लिए, क्लैंग थ्रेड सुरक्षा और विस्तारित वेक्टर प्रकारों की जाँच के लिए विशेषताएँ प्रदान करता है।
  4. क्लैंग को शुरू से ही बहुत स्पष्ट और संक्षिप्त निदान (त्रुटि और चेतावनी संदेश) प्रदान करने के लिए डिज़ाइन किया गया है, और इसमें अभिव्यंजक निदान के लिए समर्थन शामिल है।

इसलिए यह कंप्यूटर प्रोग्रामिंग में दो सबसे अधिक इस्तेमाल की जाने वाली भाषाओं के बीच निष्पादन समय की तुलना करने की मेरी छोटी सी मजेदार गतिविधि को निष्कर्ष के रूप में द्विआधारी खोज का उपयोग करता है। मुझे उम्मीद है कि आपने इसे पढ़कर कुछ ज्ञान प्राप्त किया होगा और प्रोग्रामिंग भाषा को बेहतर तरीके से चुन पाएंगे।

पढ़ने का आनंद लो !