# :&kcachegrind;-håndbogen

Josef
Weidendorfer

    Josef.Weidendorfer@gmx.de

&rune.laursen.role;

2002-2004
Josef Weidendorfer
&FDLNotice;
2003-09-18
0.4.3

&kcachegrind; er en &kde;-grænseflade for &cachegrind;, en del af &valgrind;.

KDE
kdesdk
Cachegrind
Valgrind
Profilering

## Indledning

Når du udvikler et program, er et af de sidste skridt at gøre det så hurtigt som muligt (men stadigvæk rigtigt). Du vil ikke sløse tiden væk på at optimere funktioner som sjældent bruges. Derfor skal du vide i hvilke dele af programmet den største del af tiden bruges.

Dette kaldes profilering. Programmet køres under kontrol af et profileringsværktøj, som giver et sammendrag af kørslen til sidst. Efter de producerede data er undersøgt, véd du formodentlig hvor og forhåbentlig hvordan, du skal optimere programmet. Bagefter verificerer du om optimeringen lykkedes med yderligere en profileringskørsel.

Mest kendt er GCC's profileringsværktøj gprof. Du skal kompilere programmet med flaget `-pg`, køre programmet for at oprette filen `gmon.out`, som kan oversættes til læsbar form med `gprof`. En bagdel er kompileringsskridtet for at forberede det kørbare program, som også skal linkes statisk.

I visse henseender mere avanceret, er der profileringsværktøjet &cachegrind;, en del af &valgrind;. På moderne systemer, er kørslen meget følsom overfor udnyttelsen af såkaldt cacher, smål og hurtige buffere som accelererer gentagen adgang til de samme celler i hovedhukommelsen. &cachegrind; bruger processoremuleringen i &valgrind; til at køre programfilen, og den udfører cache-simulering ved at indfange adgang til hukommelsen. Selve programmet behøver ikke kompileres igen, det kan bruge delte biblioteker og plugin, og profileringsmålingen påvirker ikke resultatet af sporingen. De data der produceres omfatter antallet af instruktioner, adgange til instruktion/datahukommelse og ikke ramt cache i første og andetniveaus cacher, og relaterer det til kildekodelinjer og funktioner i programmet som kører. Det er imdilertid en bagdel er at det bliver langsommere på grund af emuleringen af processoren, det er uheldigvis omkring 50 gange langsommere.

&calltree; er en udvidelse af &cachegrind; der opbygger kaldegrafen for et program uden-videre, &ie; hvordan funktionerne kalder hinanden og hvor mange begvenheder der sker mens en funktion køres. Desuden kan de profildata der skal indsamles blive adskilt af tråde og kaldekæde-sammenhænge. Det kan sørge for profilering af data for et instructionsniveau for at tillade annotering af disassembled kode.

&kappname; er et værktøj til at anskueliggøre profileringsdata som laves af &cachegrind; og &calltree; med masser af visualiseringsmuligheder.

## Brug af &kcachegrind;

For øjeblikket indeholder online-hjælpen ikke meget information. Kig venligst i dokumentationsafsnittet på netstedet http://kcachegrind.sf.net. Derudover har hver kontrol i &kcachegrind; Hvad er dette hjælp.

### Eksempel for at komme hurtigt i gang

Kig venligst i dokumentationsafsnittet på netstedet http://kcachegrind.sf.net for eksempler på hurtigstart.

### Funktioner i &kcachegrind;

&kcachegrind; understøtter vilkårlige begivenhedstyper, flere samtidigt indlæste profildata, funktionsgruppering,...

### Almene retningslinjer

Effektiv profilering...

### Øvelse

En profileringssession med &kcachegrind;.

## Kommandoreference

### &kcachegrind;s hovedvindue

#### Fil-menuen

&Ctrl;N Fil Ny

  Opretter et nyt dokument

&Ctrl;S Fil Gem

  Gemmer dokumentet

&Ctrl;Q Fil Afslut

  Afslutter &kappname;

## Spørgsmål og svar

&reporting.bugs; &updating.documentation;

&kcachegrind; virker ret lækker. Men jeg forstår den ikke. Hvad skal den bruges til?

&kcachegrind; er til hjælp på et sent skridt i programudvikling som kaldes profilering. Hvis du ikke udvikler programmer, har du ikke noget at bruge &kcachegrind; til.

Jeg får kompileringsfejl. Hvad kan problemet være?

Ofte har &Qt;-installationen ikke understøttelse for &kde;...

## Medvirkende og licens

&kappname;

Tak til Julian Seward for det udmærkede værktøj &valgrind;, og Nicholas Nethercote for tilføjelsen &cachegrind;. Uden disse programmer, ville hverken programrettelser for kaldetræer for &valgrind; eller KCachegrind findes. Mange af ideerne til denne grafiske grænseflade kommer også fra dem.

Og tak for alle fejlrapporter og forslag fra forskellige brugere. Sidst men ikke mindst, tak til

- &kde;, det vidunderlige programmeringsmiljø,

- &Qt;, den perfekte værktøjskasse for grafiske brugergrænseflader,

- &Linux;, det endegyldige operativsystem.

&underFDL;

## Installation

### Hvordan får jeg fat i &kcachegrind;

&kcachegrind; har en hjemmeside på http://www.weidendorfers.de/kcachegrind. Kig der for at finde yderligere installations- og kompileringsinstruktioner.

### Krav

For at bruge &kcachegrind; med heldigt resultat, har du brug for &kde; 3.x. For at oprette profileringssporinger, kræves &cachegrind;. For at tillade de mest interessante valgmuligheder for anskueliggørelse i &kcachegrind;, skal programrettelsen for kaldetræet fra &kcachegrind;s hjemmeside anvendes på &valgrind;s kildekode.

### Kompilering og installation

&install.compile.documentation;

### Indstilling

Alle indstillingsmuligheder findes enten i indstillingsdialogen eller i de sammenhængsafhængige menuer i graferne.

&documentation.index;