-Os

Tomasz Pala gotar w polanet.pl
Czw, 24 Kwi 2003, 23:27:24 CEST


On Thu, Apr 24, 2003 at 21:36:14 +0200, Mariusz Mazur wrote:

> Ktoś czuje się na siłach dyskutować z takimi argumentami? Bo jam przekonany :)

Gdyby ktoś miał ochotę to proszę wcześniej przeczytać:

slrnb9u2i2.deg.gotar w os.mil.gov.pl

slrnba7rsc.of7.gotar w os.mil.gov.pl
http://www.gnu.org/software/gcc/projects/prefetch.html

slrnba7fqt.5l4.gotar w os.mil.gov.pl (s/malign/mpreferred-stack-boundary/)

http://freshmeat.net/articles/view/730/
[...]
   `-Os'
[...]

http://developer.apple.com/techpubs/macosx/DeveloperTools/gcc3/gcc/i386-and-x86-64-Options.html
[...]
-mpreferred-stack-boundary=num
[...]

slrnba3a91.p6v.gotar w os.mil.gov.pl

Trochę błędów w moich postach może być, bo na początku się jeszcze
dokształcałem, a na końcu już mi to bokiem wychodziło.

Zaś w skrócie:
1. programy liczące; dużo siedzenia w krótkich pętlach na długim
   przedziale czasu: -O2
2. programy-krowy; długie pętle o małej liczbie przebiegów: -Os
3. programy czekające na akcję użytkownika: -Os

Uzasadnienie:
1. krótki kod mieści się bez żadnej pomocy w cache, a wyleci z niego nie
   za sprawą niezmieszczenia się, a shedulera. Ważne jest szybkie
   wykonanie, a więc skoki i obsługa stosu. Obrabia dane wielokrotnie
   większe od samego kodu.
2. Strata kilku cykli na obsłużenie gorzej alignowanego stosu i paru
   skoków jest niczym, wobec czekania na kod pobierany z RAM-u zamiast
   L1/L2.
3. pojęcie wydajności nie istnieje (co to jest wydajność hdparma czy
   lynxa?). Istotne jest, aby nie zabierać pamięci innym procesom i
   buforom oraz, co ważniejsze, nie rugować z cache wartościowych
   linijek kodu innych programów (choćby funkcji systemowych).

-- 
GoTaR <priv0.onet.pl->gotar>            USA sux
        ...Dżahilijja... znowu? Nadal...
PLD stuff at http://mops.uci.agh.edu.pl/~gotar/



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