Краткое содержание интересного доклада с CoreHard Spring 2018: "Инструменты профайлинга С++ кода":
1:40 что такое профайлинг (профилирование) и какие проблемы с его помощью можно решить.
3:45 классификация профайлеров — тут же обозначается ряд проблем профилировщиков, обсусловленных типом профилирования;
10:00 gprof — консольный профайлер для Linux. Описаны основные недостатки, показано как его использовать;
13:30 gcov — работает также как gprof, но выводит информацию о строках кода (например "сколько раз была выполнена строка");
14:20 gprof2dot — скрипт на Python, который позволяет визуализировать результаты работы не только gprof, но и ряда других профайлеров. Приведены примеры использования;
17:00 gperftools — инструмент для профилирования "вручную". В отличии от gprof умеет профилировать многопоточный код;
19:00 valgrind — фреймворк для эмулирующей профилировки под Linux и MacOS. Содержит множество утилит, а также дополнительные инструменты для визуализации данных:
* cachegrid — для профилирования кэша (информация о кэш–промахах и т.п.);
* callgrid — строит граф вызовов и дает информацию о времени работы функций;
* memcheck и massif — профилирование памяти, дают информацию об утечках и аллокациях соответственно;
* DRD и Helgrid — инструменты для профилирования многопоточных приложений. Позволяют, например, найти взаимоблокировки.
25:40 Heaptrack — позволяет профилировать и визуализировать:
* динамику потребления памяти;
* количество утечек;
* распределение потребления памяти по функциям;
* строить flamegraph потребления ОЗУ (дальше в докладе рассказывается что такое flamegraph и как его читать);
29:05 Intel VTune Amlifier — проприетарный, но бесплатный профилировщик для программ на процессорах Intel (работает только на этих процессорах). Умеет профилировать кэш программ, branch prediction, встроенное GPU. С его помощью можно, например, узнать сколько чего выполнялось на каждом ядре. Красиво визуализирует результаты.
32:10 CodeXL и AMD μProf — аналогичные инструменты для процессоров AMD. Также, XCode + Instruments содержит инструменты для профилирования в MacOS и iOS. SimplePerf — профайлер для Android (встроен в Android Studio начиная с версии 3.1).
37:28 Кратко охарактеризованы другие профайлеры, которые не вошли в доклад. Приведены советы по профилированию (очевидные, но полезные), а также, «полезные ссылки» с комментариями.
![]()
Это интересно
0
|
|||
Последние откомментированные темы: