Разница между семплирующими и контрольно-измерительными профилировщиками заключается в том, как они собирают информацию о производительности программы:
- Семплирующие профилировщики запрашивают состояние исполнения процесса, который нужно профилировать. 1 Они периодически сохраняют счётчик программы, показывающий, какая инструкция сейчас исполняется, а также сохраняют стек, благодаря чему можно узнать, какие функции вызвала та функция, что содержит текущую инструкцию. 1 Семплирующие профилировщики позволяют собирать очень низкоуровневые характеристики производительности программы и не требуют ручного вмешательства. 1
- Контрольно-измерительные профилировщики добавляют инструкции к целевой программе для сбора необходимой информации. 4 Они подходят для визуального отображения производительности кода и выявления её всплесков. 1 Однако контрольно-измерительное профилирование замедляет исполнение программы и не даёт информацию о скорости работы каждой строки кода. 1