# Manuel de &kcachegrind;

## Introduction

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.

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.

Le plus connu des outils de profilage de GCC est gprof : Vous devez compiler votre programme avec l'option `-pg` ; le lancement du programme génère un fichier `gmon.out`, qui peut être transformé dans un format lisible par l'utilisateur par `gprof`. 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.

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

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

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

## Utiliser &kcachegrind;

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

### Exemples pour un démarrage rapide

Lancez le, tout simplement !

### Fonctionnalités de &kcachegrind;

Supporte : événements arbitraires, groupement de fonctions

### Guide général d'utilisation

Pour un profilage efficace...

### Didacticiel

Une session de profilage avec &kcachegrind;.

## Les éléments de menus / barres d'outils

### La fenêtre principale de &kcachegrind;

#### Menu Fichier

&Ctrl;N Fichier Nouveau

- Crée un nouveau document

&Ctrl;S Fichier Enregistrer

- Enregistre le document

&Ctrl;Q Fichier Quitter

- Quitte &kappname;

## Question et Réponses

&reporting.bugs; &updating.documentation;

&kcachegrind; semble sympa. Mais je ne comprend rien. Quel est son utilité ?

&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;.

J'ai des erreurs à la compilation, quel peut-être le problème ?

Le plus souvent, cela signifie que votre installation de &Qt; n'a pas de support pour &kde;.

## Remerciements et licence

&kappname;

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 KCachegrind n'auraient existés. Ils sont par ailleurs à l'origine de beaucoup d'idées de cette &GUI;.

Et merci pour tous les rapports de bogues et les suggestions des différents utilisateurs. Mes derniers remerciements, mais pas les moindres, iront à

- &kde;, le splendide squelette pour des applications graphiques,

- &Qt;, le kit de développement d'&GUI; parfait

- &Linux;, l'OS ultime

&underFDL;

## Installation

### Comment obtenir &kcachegrind;

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

### Pré-requis

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

### Compilation et Installation

&install.compile.documentation;

### Configuration

Toutes les options de configuration sont soit dans la boîte de dialogue de configuration, soit dans le menu contextuel disponible sur les graphiques.

&documentation.index;