Profilování

Z Wikipedie, otevřené encyklopedie
Skočit na: Navigace, Hledání

Profilování je vyhledávání míst v programu, které jsou vhodné pro optimalizaci. Vyhledávání probíhá s pomocí speciálních nástrojů, nazývaných profilery, za běhu programu (tj. forma dynamické analýzy). Na základě konkrétního požadavku na optimalizaci se sleduje například využití paměti, doba a frekvence provádění různých částí programu, systémová volání a podobně.

Možnosti konkrétního profileru závisí na programovacím jazyku, možnostech kompilátoru a platformě na které sledovaný program běží. Pro efektivní využívaní výstupních dat profileru k optimalizaci programu je důležité brát v potaz možné zkreslení výsledků vzniklé samotným připojením profileru k programu a metodou sběru dat.

Optimalizaci práce s pamětí na základě výstupů z profilování řeší programátor. V programovacích jazycích typu C bez pokročilé správy paměti vyžaduje sledování paměti zásah programátora. Na platformách Java a .NET se při profilování paměti sleduje využívaná paměť, její alokace a uvolnění pomocí garbage collectoru.

Historie[editovat | editovat zdroj]

Nástroje pro analýzu výkonnosti existovaly již pro systémy IBM/360 a IBM/370 po roce 1970. Obvykle byly založeny na využití časovače, pomocí kterého se zaznamenávaly čas a stav vykonávaného programu (tzv. PSW, anglicky program status word), takže bylo možné najít tak zvaná horká místa programu. Na začátku roku 1974 byly uvedeny simulátory instrukční sady procesoru, které umožnily plné sledování průběhu výpočtu a přinesly další možnosti sledování výkonnosti.

Pro unixové systémy byl v roce 1979 uveden jednoduchý nástroj prof, který vypisoval všechny použité funkce a jak dlouho jejich provedení trvalo. V roce 1982 rozšířil tento koncept nástroj gprof, který vytvářel kompletní analytické grafy volání (anglicky call graph).[1]

V roce 1994 publikovali zaměstnanci firmy Digital Equipment Corporation Amitabh Srivastava a Alan Eustace práci popisující ATOM[2], což je platforma pro konverzi programů na svůj vlastní profiler. ATOM funguje tak, že při kompilaci vkládá do výstupního kódu části, které poskytují data pro analýzu. Tato technika se nazývá instrumentace (anglicky instrumentation).

V roce 2004 byly práce popisující Gprof a ATOM zařazeny na seznam 50 nejvýznamnějších prací v PLDI (anglicky Programming Language Design and Implementation).[3]

Typy profilerů v závislosti na výstupních datech[editovat | editovat zdroj]

Možný Výstup Call-graph profileru

Flat profilery[editovat | editovat zdroj]

Flat profilery zaznamenávají u jednotlivých funkcí průměrnou dobu zpracování, ale nesledují odkud a jak často jsou volány.

Call-graph profilery[editovat | editovat zdroj]

Call-graph profilery (Call-graph = graf volání funkcí) zaznamenávají dobu a četnost volání funkcí, včetně výpisu zásobníku volání funkcí (parametry funkcí se nezaznamenávají).

Reference[editovat | editovat zdroj]

V tomto článku byl použit překlad textu z článku Profiling (computer programming) na anglické Wikipedii.

  1. Gprof: a Call Graph Execution Profiler http://docs.freebsd.org/44doc/psd/18.gprof/paper.pdf
  2. http://www.stanford.edu/class/cs295/papers/atom.pdf
  3. http://www.cs.utexas.edu/users/mckinley/20-years.html

Související články[editovat | editovat zdroj]

Externí odkazy[editovat | editovat zdroj]