# O Manuald do &kcachegrind;

## Introdução

Quando você desenvolve um programa, normalmente uma das últimas tarefas é torná-lo o mais rápido possível (mantendo-se à mesma correcto!). Você não irá querer perder o seu tempo a optimizar funções que são raramente utilizadas. Por isso, convém você saber em que parte do seu programa a maioria do tempo é dispendido.

Esta análise é normalmente denominada por 'Profiling' na literatura, mas vamos usar o termo análise aqui. O programa é executado sob o controlo de uma ferramenta de análise que lhe dar um registo da execução. Depois de examinar esse registo, você irá ficar a saber onde optimizar e depois verificar o sucesso dessa optimização com outra execução da análise.

A ferramenta de análise mais conhecida é o gprof do GCC: Você precisa de compilar o seu programa com a opção `-pg`; se correr o programa, irá gerar um ficheiro `gmon.out`, o qual poderá ser transformado num formato legível com o `gprof`. A desvantagem é o passo de compilação necessário para um dado executável, o qual terá de ser compilado estaticamente.

Outra ferramenta de análise é o &cachegrind;, o qual faz parte do &valgrind;. Ele usa a emulação do processador do &valgrind; para correr o executável e captura todos os acessos de memória para o registo. O programa não precisa de ser recompilado; ele poderá usar bibliotecas dinâmicas e 'plugins', e a medida de análise não irá afectar os resultados do registo. O registo inclui o número de acessos a instruções/dados e as falhas da 'cache' de 1º/2º nível, relacionando-os com as linhas de código e as funções do programa executado (uma desvantagem é o atraso envolvido na emulação do processador, o que equivale a 50 vezes mais lento, infelizmente).

Uma alteração ao código do &valgrind; 1.0.x adiciona o registo da árvore de chamadas, &ie; como é que as funções se chamam umas às outras e quantos eventos decorrem ao executar uma função (incluindo todas as funções que são chamadas).

O &kappname; é uma ferramenta de visualização para os dados da análise gerada pelo &cachegrind;. É altamente aconselhado adicionar o suporte para o registo da árvore de chamadas no &cachegrind;, dado que o &kcachegrind; é muito mais útil desta forma.

## Usar o &kcachegrind;

Cada item no &kcachegrind; tem uma ajuda O Que É Isto?. Se não quiser procurar nesta documentação, use essa ajuda!

### Exemplos Introdutórios

Basta executá-lo!

### Funcionalidades do &kcachegrind;

Suporta: eventos arbitrários, agrupamento de funções

### Linhas-Guia Gerais

Análise Efectiva...

### Tutorial

Uma sessão de análise no &kcachegrind;.

## Referência de Comandos

### A janela principal do &kcachegrind;

#### O Menu Ficheiro

&Ctrl;N Ficheiro Novo

- Cria um novo documento

&Ctrl;S Ficheiro Gravar

- Grava o documento

&Ctrl;Q Ficheiro Sair

- Sai do &kappname;

## Perguntas e Respostas

&reporting.bugs; &updating.documentation;

O &kcachegrind; parece giro, mas não o entendo. Para que é que serve?

O &kcachegrind; é útil numa fase posterior do desenvolvimento do 'software' que é a análise ('profiling'). Se você não programar aplicações, não precisa do &kcachegrind;.

Eu obtenho erros de compilação; qual poderá ser o problema?

Normalmente, a sua instalação do &Qt; não contém o suporte do &kde;.

## Créditos e Licença

&kappname;

Obrigado ao Julian Seward pelo seu excelente &valgrind;, e ao Nicholas Nethercote pela adição do &cachegrind;. Sem estes programas, nem a actualização da árvore de chamadas, nem o &valgrind;, nem mesmo o KCachegrind existiriam. Algumas das ideias para esta interface foram dadas por eles, também.

E muito obrigado a todos os relatórios de erros e sugestões dos vários utilizadores. Por último, não desfazendo, obrigado a

- o &kde;, a maravilhosa plataforma de aplicações,

- o &Qt;, a biblioteca gráfica perfeita

- o &Linux;, o verdadeiro SO

&underFDL;

## Instalação

### Como obter o &kcachegrind;

O &kcachegrind; tem a sua página pessoal em http://www.weidendorfers.de/kcachegrind. Veja aqui mais instruções sobre a instalação e a compilação.

### Requisitos

Para poder usar com sucesso o &kcachegrind;, você precisa do &kde; 3.x. Para gerar os registos das análises, o &cachegrind; é necessário. Para permitir algumas das opções de visualização mais interessantes do &kcachegrind;, aplique a alteração da árvore de chamadas ao seu código da página do &kcachegrind; no seu código do &valgrind;.

### Compilação e Instalação

&install.compile.documentation;

### Configuração

Todas as opções de configuração se encontram na janela de configuração ou nos menu de contexto dos gráficos.

&documentation.index;