2015-11-20 10 views
7

यहाँ मैं -O2 अनुकूलन स्तर (जीसीसी 4.8.4 के साथ) के साथ एक इनपुट कार्यक्रम संकलन और निष्पादन समय को मापने:जीसीसी मानक अनुकूलन व्यवहार

gcc -O2 -c test.c -o obj.o 
TIMEFORMAT='%3R' && time(./obj.o) 
execution time = 1.825 

और जब मैं विकल्पों की सूची के साथ -O2 ध्वज की जगह के रूप में स्तर -O2 https://gcc.gnu.org/onlinedocs/gcc-4.8.4/gcc/Optimize-Options.html#Optimize-Options उस तरह में जीसीसी मैनुअल में परिभाषित चालू हैं कि:

gcc -fauto-inc-dec -fcompare-elim -fcprop-registers -fdce -fdefer-pop -fdse -fguess-branch-probability -fif-conversion2 -fif-conversion -fipa-pure-const -fipa-profile -fipa-reference -fmerge-constants -fsplit-wide-types -ftree-bit-ccp -ftree-builtin-call-dce -ftree-ccp -ftree-ch -ftree-copyrename -ftree-dce -ftree-dominator-opts -ftree-dse -ftree-forwprop -ftree-fre -ftree-phiprop -ftree-slsr -ftree-sra -ftree-pta -ftree-ter -funit-at-a-time -fthread-jumps -falign-functions -falign-jumps -falign-loops -falign-labels -fcaller-saves -fcrossjumping -fcse-follow-jumps -fcse-skip-blocks -fdelete-null-pointer-checks -fdevirtualize -fexpensive-optimizations -fgcse -fgcse-lm -fhoist-adjacent-loads -finline-small-functions -findirect-inlining -fipa-sra -foptimize-sibling-calls -fpartial-inlining -fpeephole2 -fregmove -freorder-blocks -freorder-functions -frerun-cse-after-loop -fsched-interblock -fsched-spec -fschedule-insns -fschedule-insns2 -fstrict-aliasing -fstrict-overflow -ftree-switch-conversion -ftree-tail-merge -ftree-pre -ftree-vrp -c test.c -o obj.o 
    TIMEFORMAT='%3R' && time(./obj.o) 
execution time = 2.652 

मेरा प्रश्न क्यों निष्पादन समय भी बहुत अलग है, मैं एक ही अनुकूलन लागू किया है?

अद्यतन

अगर (जीसीसी प्रलेखन के अनुसार):

नहीं सभी अनुकूलन एक झंडा द्वारा सीधे नियंत्रित कर रहे हैं।

तो शोधकर्ताओं की तुलना में मानक अनुकूलन दृश्यों (विकासवादी एल्गोरिथम का उपयोग करते हुए वे अनुकूलन दृश्यों के हजारों उत्पन्न करने के लिए इस्तेमाल करते हैं और निष्पादन समय की अवधि में उन उच्चतम प्रभाव के साथ इकट्ठा )

भी तेजी से अनुकूलन दृश्यों पुन: पेश करने का उपयोग कर सकते

एक उदाहरण "Acovea" http://hg.ahs3.net/acovea/debian/html/acoveaga.html

और "कोल" के रूप में http://users.elis.ugent.be/~leeckhou/papers/cgo08.pdf

+3

एक और संतोषजनक स्पष्टीकरण हो सकता है, लेकिन प्रीपेप्टिव मल्टीटास्किंग सिस्टम (उदाहरण के लिए, सभी डेस्कटॉप, मोबाइल और सर्वर) पर, हमेशा ऐसा ही होता है कि कुछ और चल रहा था। आम तौर पर, लोग कई समय परीक्षण चलाते हैं और उन्हें अधिक उपयोगी संख्या प्राप्त करने के लिए औसत करते हैं जो आपके बैकअप सॉफ़्टवेयर की दया पर नहीं हैं :)। – Linuxios

+0

1) कोड वास्तव में वही है? यदि नहीं: हो सकता है कि आप जीसीसी मेलिंग सूची में इस सवाल से बेहतर पूछें। यदि हां: आपकी बेंचमार्क-विधि गलत है। – Olaf

+0

@ ओलाफ अगर कोड अलग है - जीसीसी मेलिंग सूची पर क्यों पूछें? –

उत्तर

-3

वहाँ 2 अच्छा अनुकूलन टी है टोपी पता होना चाहिए किया:

  • -O2: (: प्रारंभ नहीं करता चर सावधानी)
  • -Os: अंतरिक्ष और समय का अनुकूलन का अनुकूलन अंतरिक्ष और समय (सावधानी: चर को प्रारंभ नहीं करता है)
+1

विषय से बाहर करना है – staticx

संबंधित मुद्दे