स्कूल असाइनमेंट के कारण मुझे एक सी ++ कोड को असेंबली (एआरएमवी 8) में परिवर्तित करना होगा। फिर मुझे GCC के -O0, -O1, -O2, -O3 और -Os ऑप्टिमाइज़ेशन का उपयोग करके C++ कोड संकलित करना होगा, समय लिखें और मेरे असेंबली कोड के निष्पादन समय के साथ तुलना करें। जैसा कि, मुझे लगता है कि मुझे पता है -O3 -O1 और -O2 से तेज़ होना चाहिए। हालांकि, मुझे लगता है कि -ओ 2 सबसे तेज़ है, फिर -ओ 1, -ओ 3, -ओएस, -ओ 0 हैं। क्या यह सामान्य है? (परिकलित समय लगभग 30 सेकंड हैं)।अनुकूलित निष्पादन समय
उत्तर
हां, यह सामान्य है। गाइड ऑप्टिमाइज़ेशन के रूप में -ऑक्स ऑप्टिमाइज़ेशन लें। औसतन, वे अनुकूलन का उत्पादन करते हैं जो विज्ञापन है, लेकिन उस शैली पर बहुत निर्भर करता है जिसमें कोड लिखा गया है, स्मृति लेआउट, साथ ही संकलक स्वयं भी। कभी-कभी, आपको इष्टतम कोड प्राप्त करने से पहले कई बार कोशिश करने और विफल करने की आवश्यकता होती है। -O2 वास्तव में अधिकांश मामलों में सर्वश्रेष्ठ अनुकूलन देता है।
धन्यवाद! मैं केवल -O0 पास करने में कामयाब रहा, जहां मेरा असेंबली कोड लगभग 33 के दशक में 57 और -ओ 1-3 में चलता है। यह अच्छा है? – Monstermania
हां, यह अच्छा है, और आगे अनुकूलन के लिए, आपको शायद बहुत समय और प्रयास करने की ज़रूरत है। सी ++ कोड सी कोड की तुलना में अनुकूलित करने के लिए आम तौर पर अधिक कठिन होता है। यदि आप कर सकते हैं, तो आप ढेर और ढेर के आकार को बदलकर स्मृति अनुकूलन के साथ खेलने का प्रयास कर सकते हैं। कभी-कभी, यह मदद करता है। – VladP
ध्यान दें कि जीसीसी में कई अन्यoptimization flags हैं।
कोई गारंटी नहीं है कि -O3
-O2
से तेज़ कोड देता है; एक कंपाइलर अधिक अनुकूलन पास लागू कर सकता है, लेकिन वे सभी ह्युरिस्टिक्स हैं और असफल हो सकते हैं (या आपके विशेष कोड को धीमा कर सकते हैं)। इसलिए ऐसा होता है कि -O3
-O2
से कुछ थोड़ा धीमा कोड देता है (कुछ विशेष इनपुट स्रोत कोड पर)।
आप जीसीसी का नवीनतम संस्करण आजमा सकते हैं (नवीनतम नवंबर 2017- GCC 7 है, जीसीसी 8 कुछ महीनों में बाहर जाएगा)। आप कुछ better-march=
या -mtune=
विकल्प भी आजमा सकते हैं।
अंत में, अपने GCC plugin साथ, आप अपने खुद अनुकूलन पास जोड़ सकते हैं या लागू अनुकूलन के आदेश (और सेट) बदल सकता है गुजरता है (वहाँ कई सैकड़ों विभिन्न अनुकूलन जीसीसी में गुजरता हैं)। लेकिन आपको जीसीसी का विस्तार करने में सक्षम होने के लिए बहुत सारे काम (शायद एक वर्ष या दो) की आवश्यकता होगी।
आप अनुकूलन मानकों को ट्यून कर सकते हैं, और कुछ प्रोजेक्ट (MILEPOST) ने उन्हें सुधारने के लिए मशीन सीखने की तकनीक का भी उपयोग किया है।
मेरे (पुराने) GCC MELT documentation पर स्लाइड और संदर्भ भी देखें।
- 1. निष्पादन समय
- 2. निष्पादन समय
- 3. mysql निष्पादन समय
- 4. पोस्टग्रेस क्वेरी निष्पादन समय
- 5. ओरेकल क्वेरी निष्पादन समय
- 6. निष्पादन खिड़की समय
- 7. खोजने C++ निष्पादन समय
- 8. ActiveRecord SQL निष्पादन समय
- 9. "असली" निष्पादन समय सीमा
- 10. एमपीआई वैश्विक निष्पादन समय
- 11. निष्पादन समय: इकाइयों
- 12. ट्रेसिंग विधियों निष्पादन समय
- 13. MySQL क्वेरी निष्पादन समय
- 14. शैल निष्पादन: समय बनाम/usr/bin/समय
- 15. प्रिंटिंग चींटी लक्ष्य निष्पादन समय
- 16. एंड्रॉइड में समय कोड निष्पादन
- 17. अधिकतम निष्पादन समय त्रुटि हैंडलिंग
- 18. जावा में CPU निष्पादन समय
- 19. आर पैकेज और निष्पादन समय
- 20. सी # 2.0 निष्पादन समय टाइमर
- 21. सी ++ संकलन समय फ़ंक्शन निष्पादन
- 22. PHP निष्पादन समय कैसे ढूंढें?
- 23. हाइबरनेट शो क्वेरी निष्पादन समय
- 24. symfony2 - निष्पादन समय प्राप्त करें
- 25. अधिकतम निष्पादन समय घातक त्रुटि
- 26. विंडोज फॉर्म लोड समय अनुकूलित करें
- 27. एल्गोरिदम: हाइब्रिड MergeSort और InsertionSort निष्पादन समय
- 28. कैसे मेरी चर घोषणाओं निष्पादन समय
- 29. 30 सेकंड का अधिकतम निष्पादन समय
- 30. PHP: 30 सेकंड का अधिकतम निष्पादन समय
[जीसीसी: -ओ 3 और -ओएस के बीच अंतर] (https://stackoverflow.com/questions/19689014/gcc-difference-between-o3-and-os) – Bilkokuya
मुझे संभावित प्रश्न जोड़ना चाहिए मैंने फ़्लैग किया है विशेष रूप से -ओ 2 के बारे में नहीं पूछता है, इसका उत्तर स्वीकार्य उत्तर द्वारा दिया जाता है। – Bilkokuya
आपका प्रश्न शीर्षक संकलन समय को संदर्भित करता है, लेकिन आपका प्रश्न टेक्स्ट निष्पादन समय के बारे में अधिक चिंतित लगता है, जो एक ही बात नहीं है। – lurker