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
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
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
@Olaf Kod farklıysa - neden gcc posta listesine sorulsun? –