# &kcachegrind;i käsiraamat

## 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.

Üks &valgrind; 1.0.x lähtekoodi paik lisab väljakutsete puu jälituse, &ie; selle, kuidas funktsioonid üksteist välja kutsuvad ja kui palju sündmusi toimub funktsiooni töö ajal (kaasa arvatud kõik välja kutsutud funktsioonid).

&kappname; muudab &cachegrind;i loodud profileerimisandmed inimsilmale paremini haaratavaks. On äärmiselt soovitatav lisada &cachegrind;i väljakutsete puu jälituse toetus, sest nii on &kcachegrind;ist palju rohkem kasu.

## &kcachegrind;i kasutamine

Iga &kcachegrind;i elemendi juures saab kasutada abivõimalust Mis see on? Kui sa ei soovi uurida käesolevat käsiraamatut, on need igal juhul abiks!

### Näited töö kohta

Käivita - ja ongi kõik!

### &kcachegrind;i võimalused

Toetab suvalisi sündmusi, 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;