2009-05-05 3 views
2

Мне нужно профилировать приложение, скомпилированное с помощью компилятора Intel через VC++. Я использую VTune для профайла моего кода.Какой параметр компиляции должен быть установлен для профилирования?

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

Что мне делать? Можно ли добавить информацию об отладке в режиме выпуска? Как установить этот режим?

Если да, то я все еще получаю выгоду от всей оптимизации (вставки и т. Д.)?

ответ

4

Обязательно профиль с оптимизацией включен (опция компилятора/O3)./Zi - это компилятор Intel (в Windows) для включения отладочной информации.

Из-за оптимизаций некоторые функции могут отсутствовать из информации отладки из-за встраивания, но VTune справится с этим.

+0

«справиться с этим»? Пожалуйста, не предполагайте, что это произойдет ни при каких обстоятельствах. – JohnTortugo

+0

@JohnTortugo: не совсем уверен, что вы имеете в виду - какой другой выбор? Вы хотите оптимизировать, чтобы профилирование было репрезентативным, но это означает, что функции будут входить в строчку и не иметь связанной информации об отладке. Это справки отладчиков и профилировщиков, чтобы справиться с этим. –

3

Вы можете сгенерировать файлы баз данных программы (PDB) даже в целевой версии. Перейдите к свойствам проекта, Linker/Debugging и установите флажок «Создать файл базы данных программы». Обычно это что-то вроде «$ (TargetDir) $ (TargetName) .pdb». Теперь это зависит от того, знает ли VTune, как интерпретировать файлы PDB ...

1

Функциональная оптимизация и межпроцессорная оптимизация затруднят интерпретацию вашего профиля. Вот почему это хорошая идея для профилирования в режимах отладки и выпуска. Если в режиме освобождения отображается только функция foo с использованием 80% времени программы, вы можете использовать профиль отладки, чтобы увидеть, что панель функций, которая была встроена в foo, использует 60% времени foo.