<?xml version="1.0" ?>
<!DOCTYPE book PUBLIC "-//KDE//DTD DocBook XML V4.2-Based Variant V1.1//EN" "dtd/kdex.dtd" [
  <!ENTITY kcachegrind '<application
>KCachegrind</application
>'>
  <!ENTITY cachegrind "<application
>Cachegrind</application
>">
  <!ENTITY calltree "<application
>Calltree</application
>">
  <!ENTITY valgrind "<application
>Valgrind</application
>">
  <!ENTITY kappname "&kcachegrind;">
  <!ENTITY package "kdesdk">
  <!ENTITY % addindex "IGNORE">
  <!ENTITY % Estonian  "INCLUDE">
]>

<!-- ................................................................ -->

<book lang="&language;">

<bookinfo>
<title
>&kcachegrind;i käsiraamat</title>

<authorgroup>
<author
><firstname
>Josef</firstname
> <surname
>Weidendorfer</surname
> <affiliation
> <address
><email
>Josef.Weidendorfer@gmx.de</email
></address>
</affiliation>
</author>

<othercredit role="translator"
><firstname
>Marek</firstname
><surname
>Laane</surname
><affiliation
><address
><email
>bald@online.ee</email
></address
></affiliation
><contrib
>Tõlge eesti keelde</contrib
></othercredit
> 

</authorgroup>

<copyright>
<year
>2002-2004</year>
<holder
>Josef Weidendorfer</holder>
</copyright>
<legalnotice
>&FDLNotice;</legalnotice>

<date
>2003-09-18</date>
<releaseinfo
>0.4.3</releaseinfo>

<abstract>
<para
>&kcachegrind; on &kde; kasutajaliides &valgrind;i koosseisu kuuluvale programmile &cachegrind;. </para>
</abstract>

<keywordset>
<keyword
>KDE</keyword>
<keyword
>kdesdk</keyword>
<keyword
>Cachegrind</keyword>
<keyword
>Valgrind</keyword>
<keyword
>Profileerimine</keyword>
</keywordset>

</bookinfo>


<chapter id="introduction">
<title
>Sissejuhatus</title>

<para
>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. </para>

<para
>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. </para>

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

<para
>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. </para>

<para
>&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. </para>

<para
>&kappname; muudab &cachegrind;i ja &calltree; loodud profileerimisandmed inimsilmale paremini haaratavaks. </para>
</chapter>

<chapter id="using-kcachegrind">
<title
>&kcachegrind;i kasutamine</title>

<note>
<para
>Praegu ei ole käsiraamat veel paraku väga mahukas. Põhjalikumalt tasuks tutvuda dokumentatsiooniga veebileheküljel <ulink url="http://www.weidendorfers.de/kcachegrind"
> http://kcachegrind.sf.net</ulink
>. Lisaks sellele pakub iga &kcachegrind;i element abivõimalust <quote
>Mis see on?</quote
> </para>
</note>

<sect1>
<title
>Näited töö kohta</title>

<para
>Mõningaid näiteid töö kohta leiab veebilehekülje <ulink url="http://www.weidendorfers.de/kcachegrind"
> http://kcachegrind.sf.net</ulink
> dokumentatsiooniosast. </para>
</sect1>

<sect1 id="features">
<title
>&kcachegrind;i võimalused</title>

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

<sect1 id="guidelines">
<title
>Üldised juhised</title>

<para
>Tõhus profileerimine...</para>

</sect1>
<sect1 id="tutorial">
<title
>Algõpe</title>

<para
>&kcachegrind;i profileerimisseanss...</para>

</sect1>
</chapter>

<chapter id="commands">
<title
>Käskude seletused</title>

<sect1 id="kcachegrind-mainwindow">
<title
>&kcachegrind;i peaaken</title>
<para
></para>

<sect2>
<title
>Menüü <guimenu
>Fail</guimenu
></title>
<para>
<variablelist>
<varlistentry>
<term
><menuchoice
><shortcut
> <keycombo
>&Ctrl;<keycap
>N</keycap
></keycombo
> </shortcut
> <guimenu
>Fail</guimenu
> <guimenuitem
>Uus</guimenuitem
> </menuchoice
></term>
<listitem
><para
><action
>Loob uue dokumendi</action
></para
></listitem>
</varlistentry>
<varlistentry>
<term
><menuchoice
><shortcut
> <keycombo
>&Ctrl;<keycap
>S</keycap
></keycombo
> </shortcut
> <guimenu
>Fail</guimenu
> <guimenuitem
>Salvesta</guimenuitem
> </menuchoice
></term>
<listitem
><para
><action
>Salvestab dokumendi</action
></para
></listitem>
</varlistentry>
<varlistentry>
<term
><menuchoice
><shortcut
> <keycombo
>&Ctrl;<keycap
>Q</keycap
></keycombo
> </shortcut
> <guimenu
>Fail</guimenu
> <guimenuitem
>Välju</guimenuitem
> </menuchoice
></term>
<listitem
><para
><action
>Lõpetab</action
> &kappname;i töö</para
></listitem>
</varlistentry>
</variablelist>
</para>

</sect2>

</sect1>
</chapter>

<chapter id="faq">
<title
>Küsimused ja vastused</title>
&reporting.bugs; &updating.documentation; <qandaset id="faqlist">
<qandaentry>
<question>
<para
>&kcachegrind; näeb lahe välja. Aga ma ei saa sellest mitte midagi aru. Milleks seda üldse kasutada saab?</para>
</question>
<answer>
<para
>&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. </para>
</answer>
</qandaentry>
<qandaentry>
<question>
<para
>Kompileerimisel tekivad vead, milles asi?</para>
</question>
<answer>
<para
>Kõige tavalisem põhjus: sinu &Qt; on ilma &kde; toetuseta. </para>
</answer>
</qandaentry>
</qandaset>
</chapter>

<chapter id="credits">


<title
>Autorid ja litsents</title>

<para
>&kappname; </para>
<para
>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 <application
>KCachegrind</application
>i. Neilt on pärit ka hulk häid mõtteid &GUI; kohta. </para>
<para
>Tänud ka kõigile kasutajatele, kes saatsid vearaporteid ja ettepanekuid. Ning lõpuks kuuluvad tänud kindlasti ka järgmistele asjadele <itemizedlist>
<listitem
><para
>&kde;: imehea rakenduste raamistik</para>
</listitem>
<listitem
><para
>&Qt;: suurepärane &GUI; tööriistakomplekt</para>
</listitem>
<listitem
><para
>&Linux;: tõesti parim <acronym
>OS</acronym
></para>
</listitem>
</itemizedlist>
</para>
&underFDL; </chapter>

<appendix id="installation">
<title
>Paigaldamine</title>

<sect1 id="getting-kcachegrind">
<title
>&kcachegrind;i hankimine</title>

<para
>&kcachegrind;il on oma kodulehekülg <ulink url="http://www.weidendorfers.de/kcachegrind"
> http://www.weidendorfers.de/kcachegrind</ulink
>. Sealt leiab täpsemaid juhiseid paigaldamise ja kompileerimise kohta. </para>
</sect1>

<sect1 id="requirements">
<title
>Nõuded</title>

<para
>&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. </para>
</sect1>

<sect1 id="compilation">
<title
>Kompileerimine ja paigaldamine</title>
&install.compile.documentation; </sect1>

<sect1 id="configuration">
<title
>Seadistamine</title>

<para
>Kõik seadistamisvõimalused leiab seadistustedialoogis või graafikute kontekstimenüüdes. </para>

</sect1>

</appendix>

&documentation.index;
</book>
<!--
Local Variables:
mode: sgml
sgml-minimize-attributes:nil
sgml-general-insert-case:lower
sgml-indent-step:0
sgml-indent-data:nil
End:
-->













