
- •«Оценка эффективности работы программы средствами профайлера в среде разработки Visual Studio»
- •1. Цель работы
- •2. Теоретический материал
- •2.1 Профайлер. Основные понятия.
- •2.1 Параметры оптимизации выполнения программы
- •2.2 Возможности Intel vTune Amplifier xe 2013
- •3. Работа с Intel vTune Amplifier xe 2013 в среде разработки Visual Studio
- •3.1 Начало работы
- •3.2 Анализ собранных данных профайлера:
2.2 Возможности Intel vTune Amplifier xe 2013
Профилировщик VTune разработан корпорацией Intel и предназначен для профилирования приложений, создаваемых для ОС Windows 8, 7, XP и более поздних версий.
VTune позволяет:
1. Профилировать приложения Windows и Java с использованием временных или событийно-управляемых выборок, а также производить анализ программы на «узкие места»:
-
получить развернутую картину распределения процессорного времени между участками программы;
-
определить секции кода, выполнение которых занимает наибольшее время;
-
проанализировать «узкие места», отобразить соответствующий код на языке высокого уровня и рассмотреть вопросы производительности на уровне исходной программы и ассемблерного кода;
-
собирать информацию о поведении системы во время выполнения профилируемого приложения;
2. Отобразить граф вызова функций (отображение в графической форме потоков управления, созданных во время выполнения приложения, создание полного списка всех вызываемых функций и связей между вызывающей и вызываемой функциями). В этом режиме также можно оценить время выполнения функций.
3. Анализ производительности путем статического анализа кода:
-
анализировать код функций или отмеченных блоков без выполнения приложения;
-
получить список функций и их соответствующих адресов для быстрого доступа к коду.
4. Анализ производительности на процессорном уровне с использованием статического ассемблерного анализатора.
5. Получить совет по возможной оптимизации кода на ассемблере, С, FORTRAN, C++, Java с использованием модуля “code coach”
3. Работа с Intel vTune Amplifier xe 2013 в среде разработки Visual Studio
3.1 Начало работы
1. Устанавливаем параллельный пакет разработки программного обеспечения Intel Parallel Studio, сочетающий в себе ведущие инструменты профилирования. В комплект поставки входят программные продукты:
Intel Parallel Advisor,
Intel Parallel Composer,
Intel Parallel Inspector,
Intel VTune Amplifier.
Далее нас будет интересовать конкретно VTune Amplifier (из всего пакета разработки программного обеспечения можно выборочно установить только данный профайлер).
2. По завершении установки в среде разработки Visual Studio появляется отдельная панель инструментов Intel VTune Amplifier:
Рисунок 1 - панель инструментов Intel VTune Amplifier
Далее жмем на кнопку New
Analysis
и нам открывается
начальное окно нашего профайлера Intel
VTune
Amplifier
XE
2013. В окне мы нажатием на кнопку Start,
которая позволяет
отпрофилировать написанную программу.
Рисунок 2 – окно начала анализа Intel VTune Amplifier.
3.2 Анализ собранных данных профайлера:
По завершении процесса профилирования нам будет представлена информация в следующих вкладках:
-
Summary: в этой вкладке отображается общая информация о выполнении программы (Рисунок 3):
-
Elapsed Time - общее время выполнения программы;
-
Top Hotspots – в этом разделе перечислены наиболее активные функции в исследуемом приложении. Оптимизации этих функций (горячих точек), как правило, приводит к улучшению производительности приложений в целом;
-
CPU Usage Histogram - гистограмма использования процессорного времени;
-
Collection and Platform Info - этот раздел содержит информацию о коллекции и платформе.
Рисунок 3 - Информация вкладки Summary.
-
Bottom-up: представлена информация о всех функциях(Рисунок 4):
-
CPU Time by Utilization - время выполнения каждой функции;
-
Overhead and Spin Time - время, потраченное на накладные расходы, т.е. часть времени CPU, которая тратится на синхронизацию потоков, распределение работы между ними и т.д.;
-
Source File - информация об исходных файлах;
-
Start Address - адрес начала выполнения.
Рисунок 4 - Информация вкладки Bottom-up.
2.1 VTune Amplifier XE может давать детальную информацию о накладных расходах и активном ожидании (spin waiting). Вы можете оценить, какая доля процессорного времени потрачена на накладные расходы в конкретной функции, модуле или инструкции. Вы можете использовать как значения времени в таблице, так и графическое представление на временной шкале.
Рисунок 5 - Детальная информация о накладных расходах.
2.2 Выбирая параметр в поле Grouping можно выбирать метод сортировки отображения информации о функциях: по процессам, по ядрам, группировка в классы, в модули и др.
Рисунок 6 - Параметры в поля Grouping.
2.3 Двойное нажатие на имя функции позволит посмотреть исходный код программы (а точнее акцентировать внимание на выбранной функции) и посмотреть время выполнения конкретных операций. Так же возможно дизассемблирование кода по нажатию на клавишу Assembly.
Рисунок 7 - Исходный код программы и дизассемблированный.
-
Top-down Tree: представляет весь проект в качестве дерева. Используется для изучения последовательности вызова приложения и для анализа времени.
Рисунок 8 - Информация вкладки Top-down Tree.
-
Caller/Callee: вкладка соединяет в себе лучшее от Bottom-up и Top-down. Там показаны собственное время исполнения каждой функции и полное время, с учётом вызываемых функций. Для выделенной функции в верхнем правом окне показаны её родители (Callers), а в нижнем правом – вызываемые функции (Callees). В окне Caller/Callee вы можете исследовать последовательности вызовов, и вклад каждого уровня в потребление CPU. Вы можете отфильтровать по полному времени любой функции и получить все деревья, имеющие эту функцию на каком-либо уровне. Так можно обнаружить наиболее критическую ветвь вызовов.
Рисунок 9 - Информация вкладки Caller/Callee.