# Руководство &kcachegrind;

## Введение

Завершающим шагом разработки качественного программного обеспечения обычно является его оптимизация, т.е. увеличение производительности. И чтобы не терять время на улучшение редко используемых функций, вы можете использовать профилирование.

При этом программа запускается под контролем средства профилирования, что позволяет выполнять её трассировку. Вы сможете найти места, которые требуют оптимизации (циклы и т.д.), а потом проверить эффективность оптимизации.

Наиболее известным средством профилирования является gprof (входит в комплект GCC). Откомпилируйте программу с ключом `-pg`; дальнейшее её выполнение приведёт к созданию файла `gmon.out`, который можно преобразовать в приемлемый для чтения вид командой `gprof`. В минусы такого способа следует отнести требуемый шаг компиляции приложения, которое должно быть статически подключено ("подлинковано").

&cachegrind; — другое средство профилирования, поставляемое в пакете &valgrind;. Оно использует эмуляцию процессора, доступную в &valgrind;, что позволяет перехватить все обращения к памяти без перекомпиляции программы; при этом можно использовать динамически подключаемые библиотеки и модули. Трассировка определяет число инструкций/обращений к данным, уровень непопаданий в кэш (1-го или 2-го уровня) и устанавливает соответствующее место в исходных кодах. К минусам можно отнести медлительность эмуляции процессора (снижение скорости в 50 раз).

&calltree; - это расширение &cachegrind;, собирающее график вызовов программа "на лету". Он говорит о том, как функции вызывают одна другую и как много событий происходит во время выполнения функции. Кроме того, данные профилирования собираются и разделяются на потоки и контексты цепочки вызовов. Данные профилирования могут быть предоставлены на уровне инструкций.

&kappname; — визуальный инструмент для просмотра данных профилирования, созданных &cachegrind; и &calltree;.

## Использование &kcachegrind;

К сожалению, этот документ не содержит достаточно информации. Вы можете посмотреть секцию документации на http://kcachegrind.sf.net. Кроме того, у всех графических элементов &kcachegrind; есть справка Что это?.

### Примеры

Домашняя страница &kcachegrind;.

### Возможности &kcachegrind;

&kcachegrind; поддерживает произвольные типы событий, совмещение данных профилирования, группирование функций, ...

### Общее руководство

Эффективное профилирование...

### Обучение

Сеанс профилирования в &kcachegrind;.

## Список команд

### Главное окно &kcachegrind;

#### Меню Файл

&Ctrl;N Файл Создать

- Создать новый документ

&Ctrl;S Файл Сохранить

- Сохранить изменённый документ

&Ctrl;Q Файл Выход

- Выйти из &kappname;

## Вопросы и ответы

&reporting.bugs; &updating.documentation;

&kcachegrind; выглядит забавно. Но я ничего не понял. Для чего он?

&kcachegrind; может пригодится на последней стадии разработки программного обеспечения, профилировании. Если вы не занимаетесь разработкой ПО, вам не нужна эта программа.

У меня проблемы при компиляции, что происходит?

Чаще всего, это из-за отсутствия поддержки &kde; в &Qt;.

## Благодарности и лицензия

&kappname;

Спасибо Julian Seward за его превосходную &valgrind;, и Nicholas Nethercote за &cachegrind;. Без них не было бы KCachegrind.

Спасибо всем за отчёты об ошибках/предложения. А также:

- &kde;, основа для быстрой и комфортной разработки визуальных программ,

- &Qt;, очень мощная библиотека визуальных компонентов

- &Linux;, операционная система будущего

&underFDL;

## Установка

### Как получить &kcachegrind;

Домашняя страница &kcachegrind;.

### Требования

&kde; 3.x, &cachegrind;. Для дерева вызовов, усовершенствуйте &valgrind; с помощью патча (на исходный код) call-tree, который вы можете найти на домашней странице &kcachegrind;.

### Сборка и установка

&install.compile.documentation;

### Настройка

Все параметры присутствуют или в окне настроек, или в контекстных меню диаграмм.

&documentation.index;