<?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 valgrind "<application
>Valgrind</application
>">
  <!ENTITY kappname "&kcachegrind;">
  <!ENTITY package "kdesdk">
  <!ENTITY % addindex "IGNORE">
  <!ENTITY % French "INCLUDE">
]>

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

<book lang="&language;">

<bookinfo>
<title
>Manuel de &kcachegrind;</title>

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

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

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

<abstract>
<para
>&kcachegrind; est une interface graphique &kde; pour le programme &cachegrind;, qui fait partie de la suite &valgrind;. </para>
</abstract>

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

</bookinfo>


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

<para
>Quand vous développez un programme, habituellement une des dernières étapes est de le rendre le plus rapide possible (mais toujours fonctionnel !). Vous ne voulez pas perdre votre temps à optimiser des fonctions rarement utilisées. Pour cela, vous devez connaître les parties du code où votre programme passe le plus de temps. </para>

<para
>Cette étape est appelée le profilage. Votre programme est lancé au sein d'un outil de profilage, qui vous procure une trace de l'exécution. Après l'examen de la trace, vous pouvez déterminer les endroits à optimiser et tester le succès de votre optimisation avec une autre exécution du profilage. </para>

<para
>Le plus connu des outils de profilage de GCC est <application
>gprof</application
> : Vous devez compiler votre programme avec l'option <option
>-pg</option
> ; le lancement du programme génère un fichier <filename
>gmon.out</filename
>, qui peut être transformé dans un format lisible par l'utilisateur par <command
>gprof</command
>. L'inconvénient principal de cette méthode est l'obligation d'un exécutable spécialement préparé, qui doit être lié de façon statique. </para>

<para
>Un autre outil de profilage est &cachegrind;, faisant parti de &valgrind;. Il utilise l'émulation de processeur de &valgrind; pour exécuter le programme et attrape au vol tout les accès mémoire les inscrire dans la trace. Le programme à profiler n'a pas besoin d'être recompilé, il peut utiliser dans librairies partagées ou des modules externes, et la mesure du profilage n'influence pas la trace fournie. La trace inclue le nombre d'accès sur la mémoire des instructions / des données et les échecs des caches de niveau L1 / L2, et elle met en relation les lignes du source avec les fonctions du programme exécuté. Un inconvénient est le ralentissement induit par l'émulation du processeur, cela rend le programme environ 50 fois plus lent. </para>

<para
>Un patch pour les sources 1.0.x de &valgrind; ajoute un support pour la trace de l'arbre des appels, &cad; comment les fonctions s'appellent entre elles et combien d'événements interviennent durant l'exécution de la fonction (y compris les fonctions appelées). </para>

<para
>&kappname; est un outil de visualisation des données de profilage générées par &cachegrind;. Il est FORTEMENT recommandé d'ajouter le support du tracage de l'arbre des appels à &cachegrind;, car &kcachegrind; est beaucoup plus intéressant avec cette option. </para>
</chapter>

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

<note>
<para
>Tous les composants graphiques de &kcachegrind; ont une aide de type <quote
>Qu'est ce que c'est ?</quote
>. Cette aide est complémentaire de la présente documentation, utilisez là ! </para>
</note>

<sect1>
<title
>Exemples pour un démarrage rapide</title>


<para
>Lancez le, tout simplement !</para>
</sect1>

<sect1 id="features">
<title
>Fonctionnalités de &kcachegrind;</title>

<para
>Supporte : événements arbitraires, groupement de fonctions</para>
</sect1>

<sect1 id="guidelines">
<title
>Guide général d'utilisation</title>

<para
>Pour un profilage efficace...</para>

</sect1>
<sect1 id="tutorial">
<title
>Didacticiel</title>

<para
>Une session de profilage avec &kcachegrind;.</para>

</sect1>
</chapter>

<chapter id="commands">
<title
>Les éléments de menus / barres d'outils</title>

<sect1 id="kcachegrind-mainwindow">
<title
>La fenêtre principale de &kcachegrind;</title>
<para
></para>

<sect2>
<title
>Menu <guimenu
>Fichier</guimenu
></title>
<para>
<variablelist>
<varlistentry>
<term
><menuchoice
><shortcut
> <keycombo
>&Ctrl;<keycap
>N</keycap
></keycombo
> </shortcut
> <guimenu
>Fichier</guimenu
> <guimenuitem
>Nouveau</guimenuitem
> </menuchoice
></term>
<listitem
><para
><action
>Crée un nouveau document</action
></para
></listitem>
</varlistentry>
<varlistentry>
<term
><menuchoice
><shortcut
> <keycombo
>&Ctrl;<keycap
>S</keycap
></keycombo
> </shortcut
> <guimenu
>Fichier</guimenu
> <guimenuitem
>Enregistrer</guimenuitem
> </menuchoice
></term>
<listitem
><para
><action
>Enregistre le document</action
></para
></listitem>
</varlistentry>
<varlistentry>
<term
><menuchoice
><shortcut
> <keycombo
>&Ctrl;<keycap
>Q</keycap
></keycombo
> </shortcut
> <guimenu
>Fichier</guimenu
> <guimenuitem
>Quitter</guimenuitem
> </menuchoice
></term>
<listitem
><para
><action
>Quitte</action
> &kappname;</para
></listitem>
</varlistentry>
</variablelist>
</para>

</sect2>

</sect1>
</chapter>

<chapter id="faq">
<title
>Question et Réponses</title>
&reporting.bugs; &updating.documentation; <qandaset id="faqlist">
<qandaentry>
<question>
<para
>&kcachegrind; semble sympa. Mais je ne comprend rien. Quel est son utilité ?</para>
</question>
<answer>
<para
>&kcachegrind; est utile dans un stade final du développement d'un logiciel, appelé le profilage. Si vous ne développez pas d'applications, vous n'avez pas besoin de &kcachegrind;. </para>
</answer>
</qandaentry>
<qandaentry>
<question>
<para
>J'ai des erreurs à la compilation, quel peut-être le problème ?</para>
</question>
<answer>
<para
>Le plus souvent, cela signifie que votre installation de &Qt; n'a pas de support pour &kde;. </para>
</answer>
</qandaentry>
</qandaset>
</chapter>

<chapter id="credits">


<title
>Remerciements et licence</title>

<para
>&kappname; </para>
<para
>Merci à Julian Seward pour son excellent outil &valgrind;, et à Nicholas Nethercote pour le module externe &cachegrind;. Sans ces programmes, ni le patch pour l'arbre des appels pour &valgrind;, ni <application
>KCachegrind</application
> n'auraient existés. Ils sont par ailleurs à l'origine de beaucoup d'idées de cette &GUI;. </para>
<para
>Et merci pour tous les rapports de bogues et les suggestions des différents utilisateurs. Mes derniers remerciements, mais pas les moindres, iront à <itemizedlist>
<listitem
><para
>&kde;, le splendide squelette pour des applications graphiques,</para>
</listitem>
<listitem
><para
>&Qt;, le kit de développement d'&GUI; parfait</para>
</listitem>
<listitem
><para
>&Linux;, l'<acronym
>OS</acronym
> ultime</para>
</listitem>
</itemizedlist>
</para>
&underFDL; </chapter>

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

<sect1 id="getting-kcachegrind">
<title
>Comment obtenir &kcachegrind;</title>

<para
>Le site Internet de &kcachegrind; est le suivant <ulink url="http://www.weidendorfers.de/kcachegrind"
> http://www.weidendorfers.de/kcachegrind</ulink
>. Jetez y un coup d'oeil pour plus d'informations sur l'installation et la compilation. </para>
</sect1>

<sect1 id="requirements">
<title
>Pré-requis</title>

<para
>Pour utiliser dans de bonnes conditions &kcachegrind;, vous avez besoin de &kde; 3.x. Pour générer les traces de profilage, vous avez besoin de &cachegrind;. Pour bénéficier des options de visualisation les plus intéressantes de &kcachegrind;, appliquez le patch d'arbre des appels disponible sur le site de &kcachegrind; aux sources de &valgrind;. </para>
</sect1>

<sect1 id="compilation">
<title
>Compilation et Installation</title>
&install.compile.documentation; </sect1>

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

<para
>Toutes les options de configuration sont soit dans la boîte de dialogue de configuration, soit dans le menu contextuel disponible sur les graphiques. </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:
-->













