Fruit International

Obrazek ovoce

I kdybys uz nikdy nic nedokazal a stal se z tebe alkoholik, popripade spartakiadni vrah, za tohle pujdes do nebe, nebot timto sis do konce zivota vykoupil vsechny hrichy.

Fruit Intl. morálně podporuje následující projekty:

schemik.sourceforge.net
diagnose.sourceforge.net
www.rustina-preklad.cz
petruj.eu/blog/

GCC a optimalizace s profilerem

ve flamu na rootu jsem nasel krasnou vecicku o niz jsem ani netusil, ze ji gcc umi -- optimalizace podle vysledku profileru. pri beznych optimalizacich nema tradicni prekladac (nemlouvim ted o JIT kompilaci) sanci zjistit, jak ktere casti kodu budou volany casto, z jakych mist a podobne... a proste jen hada a tipuje. nicmene, pomoci vcelku zastrcenych direktiv prekladace -fprofile-generate a -fprofile-use jde situace velice hezky zmenit a hodne pozitivnim smerem.

k na dren skompilovanemu projektu vedou nasledujici kroky:
  • nedjriv je potreba skompilovat cely projekt s direktivou -fprofile-generate (aby se mohly generovat profilacni informace)
  • pak je nutne spustit program v typicke uloze (aby profiler mohl nasbirat data o behu programu)
  • vymazat stare binarky
  • spustit preklad s direktivou -fprofile-use (aby se vyuzily optimalizace)

v Makefile jsem si na to udelal novy cil "optimal" a vypada to nejak takto:
CFLAGS+=${PROFILE_ARGS}
optimal:
make clean
make PROFILE_ARGS=-fprofile-generate
make test0 PROFILE_ARGS=-fprofile-generate
make clean
make PROFILE_ARGS=-fprofile-use
rm *.gcda
rm *.gcno


vysledky jsou opravdu "vau!":
jako test jsem pouzil svuj interpretr schemu s temito dalsimi nastavenimi:

-Wall -Winline -O3 -std=c99 -pedantic -finline-limit=100000 --param large-function-growth=100000
30 fibonacciho cislo:
  • bez optimalizaci -- 3.163
  • s optimalizacemi -- 2.580
  • zrychleni -- cca 19%

33 fibonacciho cislo:
  • bez optimalizaci -- 13.378
  • s optimalizacemi -- 10.778
  • zrychleni -- cca 20%


Vytvořil(a) deda.jabko v 08. 05. 2007, 13:16


Přidat komentář