कमांड लाइन शेल स्क्रिप्ट से संकलित सी ++ कोड उस समय की तुलना में बहुत तेज चलता है जब मैं टास्क से समान शेल स्क्रिप्ट का उपयोग करता हूं: वीएससीओडी में चलाएं। मैंने यह सुनिश्चित करने के लिए सफलतापूर्वक स्क्रिप्ट में एक इको कमांड की कोशिश की कि VSCode उसी स्क्रिप्ट को चला रहा है जिसका मैं कमांड लाइन पर उपयोग करता हूं।

मुझे पता है कि .json फ़ाइल में कंपाइलर सेटिंग्स हैं, लेकिन मैं यह नहीं देखता कि -O3 ऑप्टिमाइज़ेशन स्विच कैसे जोड़ा जाए, और चूंकि VSCode उसी स्क्रिप्ट को चला रहा है जिसका मैंने कमांड लाइन पर उपयोग किया था, मुझे नहीं पता कि यह क्यों हो सकता है अलग बनो। मैं एक नए M1 Mac पर हूँ और यहाँ मेरी स्क्रिप्ट है: clang++ -std=c++17 -O3 -o $1 $1.cpp && $1

VSCode परिणामी गति -O3 विकल्प के बीच में है और कोई अनुकूलन नहीं है। अजीब ... पहले मैंने सोचा कि यह वीएससीओडी में टर्मिनल हो सकता है लेकिन अगर मैं इसे बाहरी कमांड लाइन पर निष्पादित करता हूं तो कोड समान धीमा चलता है, इसलिए ऐसा नहीं है।

0
Jeff Lastofka 24 जिंदा 2021, 23:18
मुझे पता है कि यह भ्रमित करने वाला है। मैंने काफी खोज की और केवल वीएससी के बारे में ही धीरे-धीरे चलने वाली चीजें पा सकता हूं। इसके बारे में कुछ भी बाद में संकलित कोड को प्रभावित नहीं करता है। मैं कल्पना करने की कोशिश कर रहा हूं कि वीएससी के अंदर से कमांड लाइन स्क्रिप्ट को निष्पादित करने से कमांड लाइन पर एक ही स्क्रिप्ट से अलग परिणाम कैसे मिल सकता है। स्पष्ट रूप से वीएससी किसी तरह शामिल है। मुझे बस कोई विचार मिल सकता है कि यह कैसे हो सकता है।
 – 
Jeff Lastofka
24 जिंदा 2021, 23:58
तो यह एक संकलन समय गति मुद्दा नहीं है। यह परिणामी कोड की गति है। अंतिम कार्यक्रम पांच गुना धीमा चलता है। संकलन समय किसी भी तरह से केवल कुछ सेकंड है।
 – 
Jeff Lastofka
25 जिंदा 2021, 00:18
1
"मुझे पता है कि यह भ्रमित करने वाला है।" -- "it" से क्या आपका मतलब स्थिति या इसके बारे में आपके विवरण से है? व्यक्तिगत रूप से, मुझे आपका विवरण थोड़ा मनोरंजक, ध्यान केंद्रित करने वाला और अनुसरण करने में कठिन लगा। जैसे आप बिना किसी परिचय के अपने विचारों के बीच में कूद पड़े। (हो सकता है कि मैं सिर्फ मैं ही हूं।)
 – 
JaMiT
25 जिंदा 2021, 00:57
मुझे लगा कि आप संकलन समय की समस्या के बारे में पूछ रहे हैं, जिसका अर्थ है कि आपके कोड को बनाने में 3 के बजाय 5 मिनट लगे। आप शायद अपने tasks.json https://code.visualstudio.com/docs/cpp/config-clang-mac#_build-helloworldcpp
 – 
drescherjm
25 जिंदा 2021, 01:05
बहुत सारे प्रयोग और खुदाई के बाद, मेरे पास इसका उत्तर है: VSCode वातावरण क्लैंग ++ कंपाइलर को x86_64 कोड में संकलित करता है, और मेरे पास एक M1 मैक है। जब मैं कमांड लाइन से संकलित करता हूं, तो मुझे arm64 कोड मिलता है और यह 4 गुना तेज चलता है। यहां तक ​​​​कि मेरी शेल स्क्रिप्ट को निष्पादित करने के लिए VSCode के अंदर टर्मिनल विंडो का उपयोग करना अभी भी इसे x86 मोड पर मजबूर करता है। मैंने कहीं भी इसका कोई उल्लेख नहीं पाया है, जो कि व्यापक है। इस बार मैंने खुद इसकी खोज की। मैं एक देशी VSCode, या एक सेटिंग, या ... की तलाश करूंगा, हालांकि मदद करने की कोशिश करने के लिए धन्यवाद।
 – 
Jeff Lastofka
25 जिंदा 2021, 05:49

1 उत्तर

सबसे बढ़िया उत्तर

मुझे जवाब मिल गया। यह पता चला है क्योंकि वीएससी अभी तक ऐप्पल सिलिकॉन मूल नहीं है और मैं एम 1 मैक पर हूं। मैंने वीएससी के अंदर से जो कुछ भी किया, यहां तक ​​कि टर्मिनल विंडो से भी, परिणाम को x86_64 कोड होने के लिए मजबूर किया, जो कि आर्म 64 कोड की तुलना में 4x धीमा चलता है जिसे मैं बाहरी वीएससी से संकलित करता हूं। मुझे लगता है कि मूल संस्करण की प्रतीक्षा करने की आवश्यकता है।

2
Jeff Lastofka 1 फरवरी 2021, 18:15
यदि आपको एकीकृत डिबगिंग करने की आवश्यकता नहीं है - शायद एक पाइप पर लिखने के लिए VSCode के "बिल्ड" विकल्प को बांधना संभव होगा जहां दूसरा छोर मूल रूप से कोड बनाता है
 – 
M.M
25 जिंदा 2021, 06:37
यदि आप संतुष्ट हैं कि आपकी टिप्पणी से सभी प्रासंगिक जानकारी इस उत्तर में है, तो आप अपनी टिप्पणी को हटा सकते हैं (इस पृष्ठ को साफ रखने के लिए) फिर "मैंने इसे एक टिप्पणी में रखा है लेकिन इसे यहां रखना चाहिए था। " आपके उत्तर से थोड़ा सा।
 – 
JaMiT
31 जिंदा 2021, 05:16