[pld-discuss-pl] mała inicjatywa

Jakub Bogusz qboosh w pld-linux.org
Czw, 22 Sty 2004, 11:01:01 CET


On Thu, Jan 22, 2004 at 10:43:53AM +0100, Marcin Doliński wrote:
> W liście z czw, 22-01-2004, godz. 09:44, Jacek Rzęsista pisze: 
> > co to za -Os ?
> > Czyli że tak powiem - DC będzie dalej żyło "własnym" życiem ?
> Najpierw Ac, a DC w wolnym czasie i dla przyjemności. -Os to największy
> stopień optymalizacji na poziomie gcc.

To niezupełnie tak.
Są optymalizacje pod kątem szybkości wykonywania kodu (-O, -O2, -O3)
oraz pod kątem (mniejszego) rozmiaru kodu (-Os).
Jeśli chodzi o szybkość wykonywania kodu, -Os daje trochę mniej niż -O2.

Ale oprócz samego wykonywania kodu dochodzi dostęp do pamięci - kolejne
stopnie cache i na końcu pamięć operacyjna są wolniejsze.
Część optymalizacji pod kątem szybkości zwiększa rozmiar kodu (używanie
funkcji inline zamiast wywołań, rozwijanie pętli itp. - te ostatnie są
włączane przy -O3) - może to powodować, że kod przestaje się mieścić
w niższym poziomie cache i musi być odczytywany z wolniejszego cache
kolejnego poziomu lub pamięci operacyjnej - a tym samym kod który miał
być szybszy jako całość wykonuje się wolniej.

Co lepiej wychodzi na -O2, -O3, -Os na konkretnym procesorze (bo może
być inaczej np. na Celeronie i Xeonie na tym samym rdzeniu - różny
rozmiar cache) - zależy też od programu, jak ma rozłożony kod itp.


-- 
Jakub Bogusz    http://cyber.cs.net.pl/~qboosh/



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