# &kcachegrind;i käsiraamat

Josef
Weidendorfer

    Josef.Weidendorfer@gmx.de

Marek
Laane

    bald@online.ee

Tõlge eesti keelde
2002-2004
Josef Weidendorfer
&FDLNotice;
2003-09-18
0.4.3

&kcachegrind; on &kde; kasutajaliides &valgrind;i koosseisu kuuluvale programmile &cachegrind;.

KDE
kdesdk
Cachegrind
Valgrind
Profileerimine

## Sissejuhatus

Programmi luues soovid kindlasti lõpuks muuta selle ka võimalikult kiireks (aga samas ikka töökindlaks!). Aeg on mõistagi kallis väärtus ja optimeerimisfunktsioone kasutatakse harva. Nii on sul vaja teada saada, milline osa programmist kulutab kõige rohkem aega.

Seda nimetatakse profileerimiseks. Programm käivitatakse profileerimisvahendi valvsa pilgu all, võimaldades sul jälitada programmi käivitamist ja tööd. Pärast jälituse uurimist on usutavasti võimalik näha, kus tuleks midagi optimeerida, ning kui see on tehtud, saab tulemusi kontrollida uue profileerimisega.

Tuntuim sellistest vahenditest on GCC profileerimisvahend gprof. Selle kasutamiseks tuleb programm kompileerida võtmega `-pg`, misjärel programmi käivitamine tekitab faili `gmon.out`, mille käsuga `gprof` saab muuta inimsilmale arusaadavale kujule. Puuduseks on aga vajadus kasutada kompileerimist, et ette valmistada käivitatav fail, mis peab olema staatiliselt lingitud.

Teine profileerimisvahend on &valgrind;i koosseisu kuuluv &cachegrind;. See kasutab &valgrind;i protsessori emuleerimist käivitatava faili töölepanemiseks ning jälitab iga mällupöördumise juhtu. Programmi ei ole vaja kompileerida, see võib kasutada jagatud teeke ja pluginaid nng profileerimine ei mõjuta jälituse tulemust. Jälitus hõlmab instruktsioonide ja andmete mällupöördumiste ning 1. ja 2. taseme vahemälu vajakute arvu ja seondab need käivitatava programmi lähteridade ja funktsioonidega. Puuduseks on protsessori emuleerimisega kaasnev aeglus, mis võib olla eelmise vahendiga võrreldes isegi üle 50 korra aeglasem.

&calltree; on &cachegrind;i laiend, mis loob käigult programmi väljakutsete graafiku, &ie; näitab, millised funktsioonid milliseid välja kutsuvad ja kui palju sündmusi funktsiooni töö ajal ette tuleb. Lisaks saab profileerimisandmeid koondada eraldi lõimedesse ja väljakutsete ahelatesse. See pakub profileerimisandmeid instruktsiooni tasemel, mis lubab dissambleeritud koodi annoteerimist.

&kappname; muudab &cachegrind;i ja &calltree; loodud profileerimisandmed inimsilmale paremini haaratavaks.

## &kcachegrind;i kasutamine

Praegu ei ole käsiraamat veel paraku väga mahukas. Põhjalikumalt tasuks tutvuda dokumentatsiooniga veebileheküljel http://kcachegrind.sf.net. Lisaks sellele pakub iga &kcachegrind;i element abivõimalust Mis see on?

### Näited töö kohta

Mõningaid näiteid töö kohta leiab veebilehekülje http://kcachegrind.sf.net dokumentatsiooniosast.

### &kcachegrind;i võimalused

&kcachegrind; toetab suvalist tüüpi sündmusi, korraga mitme profiiliandmete faili laadimist, funktsioonide rühmitamist...

### Üldised juhised

Tõhus profileerimine...

### Algõpe

&kcachegrind;i profileerimisseanss...

## Käskude seletused

### &kcachegrind;i peaaken

#### Menüü Fail

&Ctrl;N Fail Uus

  Loob uue dokumendi

&Ctrl;S Fail Salvesta

  Salvestab dokumendi

&Ctrl;Q Fail Välju

  Lõpetab &kappname;i töö

## Küsimused ja vastused

&reporting.bugs; &updating.documentation;

&kcachegrind; näeb lahe välja. Aga ma ei saa sellest mitte midagi aru. Milleks seda üldse kasutada saab?

&kcachegrind;ist on kasu tarkvara arendamise viimases järgus, mida nimetatakse profileerimiseks. Kui sa ei tööta ise tarkvara välja, ei ole sul ka &kcachegrind;iga midagi tarka peale hakata.

Kompileerimisel tekivad vead, milles asi?

Kõige tavalisem põhjus: sinu &Qt; on ilma &kde; toetuseta.

## Autorid ja litsents

&kappname;

Tänud Julian Sewardile suurepärase &valgrind;i ja Nicholas Nethercote'ile &cachegrind;i lisanduse eest. Ilma nende programmideta ei oleks olemas ei &valgrind;i väljakutse puu paika ega KCachegrindi. Neilt on pärit ka hulk häid mõtteid &GUI; kohta.

Tänud ka kõigile kasutajatele, kes saatsid vearaporteid ja ettepanekuid. Ning lõpuks kuuluvad tänud kindlasti ka järgmistele asjadele

- &kde;: imehea rakenduste raamistik

- &Qt;: suurepärane &GUI; tööriistakomplekt

- &Linux;: tõesti parim OS

&underFDL;

## Paigaldamine

### &kcachegrind;i hankimine

&kcachegrind;il on oma kodulehekülg http://www.weidendorfers.de/kcachegrind. Sealt leiab täpsemaid juhiseid paigaldamise ja kompileerimise kohta.

### Nõuded

&kcachegrind;i edukaks kasutamiseks on vajalik &kde; 3.x. Profileerimise jälituseks on vajalik &cachegrind;. &kcachegrind;ile veel huvitavamate ja kasulikumate visuaalsete omaduste andmiseks lisa oma &valgrind;i lähtekoodile &kcachegrind;i koduleheküljelt väljakutsete puu (call tree) paik.

### Kompileerimine ja paigaldamine

&install.compile.documentation;

### Seadistamine

Kõik seadistamisvõimalused leiab seadistustedialoogis või graafikute kontekstimenüüdes.

&documentation.index;