2015-11-20 12 views
7

optimizasyonları davranışı ve yürütme zamanı ölçmek:GCC standart I (gcc 4.8.4 ile birlikte) O2 optimizasyon seviyesine sahip bir giriş programı derlemek İşte

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

ve seçeneklerim listesi ile O2 bayrağı değiştirdiğinizde düzeyinde böyle O2 https://gcc.gnu.org/onlinedocs/gcc-4.8.4/gcc/Optimize-Options.html#Optimize-Options yılında GCC manuel tanımlanan açık olduğundan emin:

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 

sorum yürütme zamanı aynı optimizasyonlar uygulanan bile bu kadar farklı olmasının nedeni nedir?

güncellersem (GCC belgelere göre)

: Tüm optimizasyonlar bir işaretleme tarafından doğrudan kontrol edilir değil

.

Yani araştırmacılar standart optimizasyon dizileri (evrimsel algoritmalar kullanılarak onlar optimizasyon dizilerinin binlerce oluşturmak için kullandığımız ve yürütme zamanı vadede en yüksek etkiye sahip olanlar toplamak )

daha da hızlı optimizasyon dizilerini çoğaltmak nasıl kullanabileceğinizi

örnek "Acovea" http://hg.ahs3.net/acovea/debian/html/acoveaga.html

ve "Cole" olarak http://users.elis.ugent.be/~leeckhou/papers/cgo08.pdf

+3

Daha tatmin edici bir açıklama olabilir, ancak önleyici çoklu görev sistemlerinde (örneğin, tüm masaüstü, mobil ve sunucu), her zaman başka bir şeyin devam etme şansı vardır. Genel olarak, insanlar birçok zamanlama testini yürütürler ve onları yedekleme yazılımınızın merhametinde olmayan daha yararlı numaralar elde etmek için sıralarlar :). – Linuxios

+0

1) kod gerçekten aynı mı? Değilse: Belki de bu soruyu gcc posta listesine sormalısınız. Varsa: ölçüt yönteminiz yanlış. – Olaf

+0

@Olaf Kod farklıysa - neden gcc posta listesine sorulsun? –

cevap

-3

2 iyi optimizasyon t yoktur şapka biliyorum edilmelidir:

  • O2: (: başlatılmaz değişken Dikkat)
  • -OS: uzay ve zaman Optimize (: değişkeni başlatmak gelmez Dikkat)
  • uzay ve saati Optimize
+1

konu dışı bırakmayı hedeflediğinden – staticx