# Handbok &kcachegrind;

## Inledning

När du utvecklar ett program, är oftast ett av de sista stegen att göra det så snabbt som möjligt (men fortfarande riktigt). Du vill inte slösa bort din tid på att optimera funktioner som sällan används. Därför måste du veta i vilka delar av programmet som den största delen av tiden går åt.

Detta kallas profilering. Programmet körs under kontroll av ett profileringsverktyg, som ger spårning av körningen. Efter spårningen har undersökts, vet du troligen var du ska optimera och efteråt verifierar du hur optimeringen lyckades med ytterligare en profileringskörning.

Mest känt är GCC:s profileringsverktyg gprof. Du måste kompilera programmet med väljaren `-pg`, köra programmet för att skapa filen `gmon.out`, som kan översättas till läsbar form med `gprof`. Nackdelen är kompileringssteget för att förbereda det körbara programmet, som också måste länkas statiskt.

Ett annat profileringsverktyg är &cachegrind;, som är en del av &valgrind;. Det använder emuleringen av processorn i Valgrind för att köra programmet, och fångar alla minnesåtkomster för spårningen. Programmet behöver inte kompileras om, det kan använda delade bibliotek och insticksprogram, och profileringsmätningen påverkar inte resultatet av spårningen. Spårningen omfattar antal instruktioner, åtkomster till dataminnet och cachemissar i första och andra nivåns cacher, och relaterar det till källkodsrader och funktioner i programmet som kör (en nackdel är insaktandet beroende på emuleringen av processorn, det är olyckligtvis omkring 50 gånger långsammare).

En programfix för källkoden till &valgrind; 1.0.x lägger till spårning av anropsträdet, dvs. hur funktionerna anropar varandra och hur många händelser som sker medan en funktion körs (inklusive alla anropade funktioner).

&kappname; är ett verktyg för att åskådliggöra profileringsdata som skapas av &cachegrind;. Du rekommenderas bestämt att lägga till stöd för spårning av anropsträd till &cachegrind;, eftersom &kcachegrind; på så sätt blir mycket mer användbart.

## Att använda &kcachegrind;

Observera: Varje komponent i &kcachegrind; har Vad är det här? hjälp. Om du inte vill leta i dokumentationen, använd den!

### Exempel för att snabbt komma igång

Kör det helt enkelt!

### Funktioner i &kcachegrind;

Stöder: godtyckliga händelser, funktionsgruppering

### Allmänna riktlinjer

Effektiv profilering...

### Handledning

En profileringssession med &kcachegrind;.

## Kommandoreferens

### &kcachegrind;s huvudfönster

#### Menyn Arkiv

&Ctrl;N Arkiv Ny

- Skapar ett nytt dokument

&Ctrl;S Arkiv Spara

- Sparar dokumentet

&Ctrl;Q Arkiv Avsluta

- Avslutar &kappname;

## Vanliga frågor

&reporting.bugs; &updating.documentation;

&kcachegrind; verkar häftigt. Men jag förstår det inte. Vad är det bra för?

&kcachegrind; är till hjälp vid ett sent steg i programutveckling som kallas profilering. Om du inte utvecklar program, behöver du inte &kcachegrind;.

Jag får kompileringsfel. Vad kan problemet vara?

Ofta har inte &Qt;-installationen stöd för &kde;...

## Tack till och licens

&kappname;

Tack till Julian Seward för det utmärkta verktyget &valgrind;, och Nicholas Nethercote för tillägget &cachegrind;. Utan dessa program, skulle varken programfixen för anropsträd till &valgrind; eller KCachegrind finnas. Många av idéerna för det grafiska gränssnittet kommer också från dem.

Och tack för alla felrapporter och förslag från olika användare. Sist men inte minst, tack till

- &kde;, det underbara programramverket,

- &Qt;, den perfekta verktygslådan för grafiska användargränssnitt,

- &Linux;, det slutgiltiga operativsystemet.

&underFDL;

## Installation

### Hur man skaffar &kcachegrind;

&kcachegrind; har en hemsida på http://www.weidendorfers.de/kcachegrind. Titta där för att hitta ytterligare installations- och kompileringsinstruktioner.

### Krav

För att använda &kcachegrind; med lyckat resultat, behöver du &kde; 3.x. För att skapa profileringsspårningar, krävs &cachegrind;. För att tillåta de mest intressanta alternativen för åskådliggörande i &kcachegrind;, använd programfixen för anropsträd från &kcachegrind;s hemsida med &valgrind;s källkod.

### Kompilering och installation

&install.compile.documentation;

### Anpassning

Alla inställningsalternativ finns antingen i inställningsdialogrutan eller i sammanhangsberoende menyer i diagrammen.

&documentation.index;