-Os

Michal Moskal malekith w pld-linux.org
Czw, 24 Kwi 2003, 21:06:48 CEST


On Thu, Apr 24, 2003 at 07:33:28PM +0200, Mariusz Mazur wrote:
> On Thursday 24 of April 2003 19:39, Jakub Bogusz wrote:
> > Jeżeli -Os w stosunku do -O2/-O1/-O0 powoduje jakieś problemy, to
> > mielibyśmy problem z kompilatorem lub błędami w kodzie (zazwyczaj
> > aliasingiem). AFAIK sama istota tej opcji nie ma jak sprawiać
> > problemów w poprawnie napisanym kodzie.
> 
> Ja mam traumatyczne doświadczenia z -O2 na innych arch niż x86, także jeszcze 
> jakieś egzotyczne -Os do mnie nie przemawia :)
> 
> Inna sprawa, że -Os to nie jest optymalizacja wielkości kosztem prędkości?

Generalanie tak, ale dzisiejsze maszynki są tak zrobione, że procesor 
większość czasu spędza na czekaniu na pamięć. Po prostu, jeśli jakieś
dane lub kod nie znajdują się jeszcze w cache, ładowana jest cały
cache-line, co na szybkich procesorach zabiera do kilkuset cykli. W
takiej sytuacji np. rozwijanie pętli czy inlining stają się barzdzo 
ryzykowne (znaczy znacznie lepiej zapłacić kilka dodatkowych cykli za
skoki czy zwiększanie indeksu niż ryzykować wylecenie z cache).

O ile dla dzisiejszych sporych rozmiarów cache, oraz małych programów na
których są testowane kompilatory, rozwiajanie pętli czy inne optymalizacje
zwiększające rozmiar kodu mog się opłacać, w wypadku kalubryn typu
mozilla może przestać tak być. Dlatego -Os może mieć dodatni wpływ na
szybkość w niektórych przypadkach.

Sorry for being eleborate ;-)

-- 
: Michal Moskal :: http://www.kernel.pl/~malekith : GCS {C,UL}++++$ a? !tv
: PLD Linux ::::::::: Wroclaw University, CS Dept : {E-,w}-- {b++,e}>+++ h



Więcej informacji o liście dyskusyjnej pld-devel-pl