Profilování programů v C Ivana Hutařová Vařeková.

Slides:



Advertisements
Podobné prezentace
ŘÍDÍCÍ STRUKTURY - PODMÍNKY
Advertisements

Vytváření, použití dávkových souborů
 Vyhledání míst v programech vhodných pro optimalizaci  Sleduje se četnost volání a trvání jednotlivých částí programu JetBrains dotTrace Profiler.
Debugování v C/C++. Co musíme však nejdříve udělat? Přeložit program s debug informacemi Umožníme přidáním volby –g do překladače POZOR!!! Pokud se program.
UŽITEČNÉ PROGRAMY – MŮJ PRVNÍ SKRIPT Spustíme více prográmků najednou. SPŠ Teplice - 3.V.
Generování mezikódu Jakub Yaghob
Principy překladačů Vysokoúrovňové optimalizace Jakub Yaghob.
Vzdělávací materiál / DUMVY_32_INOVACE_02B9 Dávkové soubory AutorIng. Petr Haman Období vytvořeníBřezen 2013 Ročník / věková kategorie2. ročník Vyučovací.
Název školy: Střední průmyslová škola, Ostrava - Vítkovice, příspěvková organizace Autor: Mgr. Dagmar Andrysová Datum: Název: VY_22_INOVACE_1_2_21.
Vyučovací hodina 1 vyučovací hodina: Opakování z minulé hodiny 5 min Nová látka 20 min Procvičení nové látky 15 min Shrnutí 5 min 2 vyučovací hodiny: Opakování.
Školení správců II. Petr Pinkas RNDr. Vít Ochozka.
PHP – zasílání dat z formuláře
Flat shapes - obvod geometrických útvarů - matematika Holasová Alena - ZŠ a MŠ Ostrava - Zábřeh, Kosmonautů 15 Metodické pokyny pro učitele Předmět:
PHP – Základy programování
1 Škola: Gymnázium, Brno, Slovanské náměstí 7 Šablona: III/2 – Inovace a zkvalitnění výuky prostřednictvím ICT Název projektu: Inovace výuky na GSN prostřednictvím.
Číslo projektuCZ.1.07/1.5.00/ Číslo materiáluVY_32_INOVACE_180 Název školyGymnázium, Tachov, Pionýrská 1370 Autor Mgr. Eleonora Klasová Předmět.
1 Škola: Gymnázium, Brno, Slovanské náměstí 7 Šablona: III/2 – Inovace a zkvalitnění výuky prostřednictvím ICT Název projektu: Inovace výuky na GSN prostřednictvím.
6. cvičení Polymorfismus
Jazyk XML Jazyk pro tvorbu strukturovaných dokumentů Syntaxí velmi podobný HTML Hlavní cíle návrhu: Snadná editace - jazyk je textový Snadné strojové zpracování.
Registrační číslo projektu:CZ.1.07/1.5.00/ Šablona/číslo materiálu:III/2 VY_32_INOVACE_ANJ449 Jméno autora:Mgr. Soňa Nekvindová Třída/ročník1. ročník.
1 Škola: Gymnázium, Brno, Slovanské náměstí 7 Šablona: III/2 – Inovace a zkvalitnění výuky prostřednictvím ICT Název projektu: Inovace výuky na GSN prostřednictvím.
OSNOVA: a)Funkce – úvod b) Hlavičky funkcí c) Rekurze funkcí d)Knihovny funkcí e)Příklady Jiří Šebesta Ústav radioelektroniky, FEKT VUT v Brně Počítače.
UNIX Shell skripty Roman Danel VŠB TU Ostrava, Hornicko – geologická fakulta.
Metodika objektového přístupu při tvorbě překladačů. Marek Běhálek Informatika a aplikovaná matematika FEI VŠB-TU Ostrava.
ŠKOLA: Gymnázium, Tanvald, Školní 305, příspěvková organizace ČÍSLO PROJEKTU: CZ.1.07/1.5.00/ NÁZEV PROJEKTU: Šablony – Gymnázium Tanvald ČÍSLO.
Instalace MS Dynamics NAV 5.0
Orbis pictus 21. století Tato prezentace byla vytvořena v rámci projektu.
Richard Lipka Department of Computer Science and Engineering Faculty of Applied Sciences University of West Bohemia, Pilsen, Czech Republic.
Výukový materiál zpracován v rámci projektu EU peníze školám Registrační číslo projektu: CZ.1.07/1.5.00/ Šablona:III/2č. materiálu:VY_32_INOVACE_59.
Problémy s češtinou České znaky se standardně nepovažují za alfanumerické znaky (\w) Vadí to při třídění vyhodnocování regulárních výrazů Je třeba použít.
ŠKOLA: Gymnázium, Tanvald, Školní 305, příspěvková organizace ČÍSLO PROJEKTU: CZ.1.07/1.5.00/ NÁZEV PROJEKTU: Šablony – Gymnázium Tanvald ČÍSLO.
Operační systém GNU Linux Příkazy pro správu procesů.
Střední průmyslová škola strojnická Olomouc, tř.17. listopadu 49 Výukový materiál zpracovaný v rámci projektu „Učíme moderně“ Registrační číslo projektu:
1 Škola: Gymnázium, Brno, Slovanské náměstí 7 Šablona: III/2 – Inovace a zkvalitnění výuky prostřednictvím ICT Název projektu: Inovace výuky na GSN prostřednictvím.
OPERAČNÍ SYSTÉMY.
Registrační číslo projektu:CZ.1.07/1.5.00/ Šablona/číslo materiálu:VY_32_INOVACE_AJK444 Jméno autora:Mgr.Soňa Nekvindová Třída/ročník4. ročník Datum.
JUI přednáška Vstup a výstup, cykly RNDr. Jiří Dvořák, CSc.
Nezapomeň co musíš udělat don't forget what you have to do.
1 Škola: Gymnázium, Brno, Slovanské náměstí 7 Šablona: III/2 – Inovace a zkvalitnění výuky prostřednictvím ICT Název projektu: Inovace výuky na GSN prostřednictvím.
Balíky Hlavní balík - main - zatím jsme s jiným nepracovali Rozdělují tzv. namespaces = množiny jmen pro proměnné $lemma = "cukr"; znamená $main::lemma.
Střední průmyslová škola strojnická Olomouc, tř.17. listopadu 49 Výukový materiál zpracovaný v rámci projektu „Učíme moderně“ Registrační číslo projektu:
Operační systém GNU Linux Příkazy pro práci se soubory.
Tutorial: Obchodní akademie Topic: Logical Functions Prepared by: Mgr. Zdeněk Hrdina Projekt Anglicky v odborných předmětech, CZ.1.07/1.3.09/ je.
Visual Basic - programování
1 Škola: Gymnázium, Brno, Slovanské náměstí 7 Šablona: III/2 – Inovace a zkvalitnění výuky prostřednictvím ICT Název projektu: Inovace výuky na GSN prostřednictvím.
Jméno autora: Mgr. Olga Bayerlová Datum vytvoření: Číslo DUMu: VY_32_INOVACE_14_AJ3E Ročník: II. Anglický jazyk Vzdělávací oblast: Jazyk a jazyková.
Instalace MS Dynamics NAV 5.0 Stručný návod/Installation manual.
Databázové systémy I Cvičení č. 8 Fakulta elektrotechniky a informatiky Univerzita Pardubice 2015.
Operační systém GNU Linux
Podpora rozvoje cizích jazyků pro Evropu 21. stol. INVESTICE DO ROZVOJE VZDĚLÁVÁNÍ Tento projekt je spolufinancován Evropským sociálním fondem a státním.
Autorem materiálu a všech jeho částí, není-li uvedeno jinak, je Mgr. Jan Rozsíval. Slezské gymnázium, Opava, příspěvková organizace. Vzdělávací materiál.
Autorem materiálu a všech jeho částí, není-li uvedeno jinak, je Mgr. Jan Rozsíval. Slezské gymnázium, Opava, příspěvková organizace. Vzdělávací materiál.
y.cz Název školyStřední odborná škola a Gymnázium Staré Město Číslo projektuCZ.1.07/1.5.00/ AutorMgr. Roman Chovanec Název šablonyIII/2.
Název školy:Základní škola a Mateřská škola Sepekov Autor:Mgr. Hana Červená Název:VY_32_INOVACE_78 _angličtina-gramatika Vzdělávací oblast:Jazyk a jazyková.
Základy programování mikropočítačů První program v jazyce symbolických adres.
Batové dávky Autorem materiálu a všech jeho částí, není-li uvedeno jinak, je Vojtěch Mrózek. Dostupné z Metodického portálu ISSN: ,
Gymnázium, Brno, Elgartova 3 GE - Vyšší kvalita výuky CZ.1.07/1.5.00/ III/2 Inovace a zkvalitnění výuky prostřednictvím ICT Téma: English Grammar.
I. Pomocí roztahování buněk (viz přednáška Příprava dat) vyplnit buňky čísly od 1 do 79 Příklad používání funkcí: II. Spoj příjmení a jméno do jednoho.
HYPERTEXT PREPROCESSOR. JAZYK PHP. VYUŽITÍ JAZYKA Programování dynamických internetových stránek a webových aplikací vytvoření šablony webu kniha návštěv.
KIV/ZD cvičení 8 Tomáš Potužák.
Gymnázium, Brno, Elgartova 3
Název vzdělávacího materiálu
ZAL – 3. cvičení 2016.
Výukový materiál zpracován v rámci projektu
MY HOUSE - MY CASTLE Autor: Mgr. Ivana Tesařová
Instalace MS Dynamics NAV 5.0
Obchodní akademie, Střední odborná škola a Jazyková škola s právem státní jazykové zkoušky, Hradec Králové Autor: Mgr. Radka Černá Název materiálu: VY_32_INOVACE_5_ANGLICKY_JAZYK_GRAMATIKA_15Spojky.
Podprogramy.
Představení Úvod Celé je to pojaté spíše jako představení služby a jejích možností, nežli konkrétní ukázky Lukáš Čochner.
chkdsk , systeminfo, subst, shutdown
Transkript prezentace:

Profilování programů v C Ivana Hutařová Vařeková

2 Obsah 1. profilování programu 2. nástroje ● gprof ● callgrind/kcachegrind ● ostatní (sprof, oprofile,... ) 3. odkazy

3 Profilování programu I ● Profilování programu = “vyhledávání míst v programu, které jsou vhodná pro optimalizaci” ● “Bottlenecks occur in surprising places, so don't try to second guess and put in a speed hack until you have proven that's where the bottleneck is.” - Rob Pike

4 Profilování programu II ● We should forget about small efficiencies, say about 97% of the time: premature optimization is the root of all evil. Yet we should not pass up our opportunities in that critical 3%.” ● - Donald Knut

5 Profilování programu - postup III Standartní kroky při profilování s použitím automatickýho nástrojů: (1) ( přeložení zdrojového kódu s nutnými volbami překladače - nutné jen u některých nástrojů) (2) vygenerování profilovacích dat (3) analýza profilovacích dat

6 Profilování programu – výstupy (IV) ● flat profile – průměrná doba běhu procedur

7 Profilování programu – výstupy (V) call-graph profile zobrazuje: kým byla funkce volána které funkce volala

8 Nástroje ● gprof - The GNU Profiler ● valgrind (callgrind*, kcachegrind) ● sprof ● OProfile...

9 gprof (I) součást balíku gprof (1) přeložení kódu: přidáme přepínač -pg gcc -pg program.c -o program (2) vygenerování profilovacích dat: (3)./program < vstup (4) zpracování dat: gprof./program

10 gprof - překlad (II) gcc -pg program.c -o program přepínač -pg znamená: ● překladač přidá na začátek každé funkce program.c příkaz, který uloží ● odkud byla funkce volána ● bude prováděno samplovaní (intervaly 10ms) ● program se přeruší (syscall profil) a je zjištěno, v které funkci se nachází ● na zavěr programu jsou vypsána získaná data

11 gprof - generování dat (III)./program < vstup ● při skončení běhu vytvoří v aktuálním adresáři soubor gmon.out ● pokud soubor existoval je přepsán ● gprof používá gmon.out jako vstup

12 gprof - flat profile (IV) %time - procento času strávené v funkci name self seconds - třídící kritérium - počet sekund strávených ve funkci name calls - počet volání dané funkce name

13 gprof – flat profile (V) časy běhu procedur jsou určovány samplováním = v případě krátkých běhů procedur (100ms) nepřesné

14 gprof – call graph (VI)

15 gprof – výhody/nevýhody (VII) - překlad programu s volbou -pg (nutné i u knihoven pokud je chceme zahrnout) - samplování není přesné (problémy u krátkých funkcí) - pozor na přepsání výstupu gmon.out + jednoduché ovládání + není výrazný nárust délky běhu programu (v radu procent)

16 valgrind a spol. (I) ● přeložení kódu: není potřeba nic nestandartního ● vygenerování profilovacích dat: valgrind --tool=callgrind program ● sledování běhu/průběžné výpisy dat callgrind_control ● zpracování dat: callgrind_annotate - textové kcachegrind – grafické (balík – kdesdk)

17 valgrind – generování dat (II) valgrind --tool=callgrind./program ● vypíše profilovací data do souboru: callgrind.out.$PID... ● počet instrukcí vykonaných funkcí, ● kdo/kolikrát funkci volal, koho/kolikrát funkce volala ● suffix výstupního programu je standartně $PID, ale může být unikátní per thread,...

18 valgrind – užitečná nastavení (III) --dump-instr=yes ● výstupní soubor bude obsahovat informace per instrukci (umožní výpis po řádku kódu) ● --simulate-cache=yes ● umožní generování informací o využití cache

19 valgrind - callgrind_controll (IV) callgrind_controll $pid|program vypíše status valgrindu spuštěného na procesu definovaneho jménem program nebo pidem -l,--longvypíše adresář kde je valgrind spuštěn -b vypíše aktuální backtrace

20 valgrind - callgrind_controll (V) callgrind_control -d xxx $PID|program ● provede dump aktuálních dat do souboru ● -z vynuluje countery

21 valgrind - callgrind_annotate (VI) callgrind_annotate callgrind.out.$pid ● vyhodnotí profilovací data programu který doběhl --tree=none|caller|calling|both ● přepíná mezi druhy výpisu --inclusive=yes|no ● přepíná inkludování podfunkcí --threshold=100 ● procento času běhu které nás zajímá

22 valgrind - callgrind_annotate (VII) $ callgrind_annotate –inclusive=yes callgrind.out.123

23 valgrind - callgrind_annotate (VIII) ● má problemy s detekcí rekurze v procedurách ● kcachegrind má tento problém vyřešen

24 valgrind - kcachegrind (IX)

25 valgrind - kcachegrind flat profile (X) Incl – délka behu včetně podfunkcí Self – délka běhu bez podfunkcí Called – počet volání funkce Function – jméno funkce

26 valgrind - kcachegrind call graph(XI)

27 valgrind – výhody/nevýhody (XII) - výrazné zpomalení doby běhu programu (10-ti nasobky) + není nutný překlad programu se speciálními nastaveními (-g pro “source code“ výstup) + je možné ladit programy které neskončili běh + variabilita nastavení profilování + variabilita nastavení způsobu výstupu + kcachegrind

28 další nástroje ● sprof ● součást glibc-common ● OProfile ● samostatný balík ( ● skládá se z driveru pro kernel a daemona, který sbírá data a nástrojů pro vyhodnocení těchto dat ● provádí samplování ●...

29 ODKAZY (I) ● profiling obecně: ● ● ● gprof: ●

30 ODKAZY (II) ● valgrind/calgrind/kcachegrind ● ● ● ● /usr/share/doc/valgrind-3.4.1/valgrind_manual.pdf ● další profilery: ● ●