Профилирование конкретного метода с помощью devpartner
Я использую devPartner для профилирования производительности некоторого кода C++. Есть ли способ профилировать только определенную функцию или удалить определенную функцию из профилирования?
3 ответа
Вам необходимо указать /nmignore:: в настройках проекта в C/C++ дополнительные параметры командной строки.
Имя функции может быть полным именем функции, началом функции, сопровождаемым * или * некоторым шаблоном * для предложения содержимого.
Таким образом, /nmignore::main исключит main, включенный в любой файл /nmignore:main.cpp:myfunc исключит все функции, начинающие myfunc только с main.cpp / nmignore: *:std:: исключит все пространство std:: namepspace функции во всех файлах.
Инструментарий происходит между этапами компиляции C1 и C2, поэтому все функции уже встроены из заголовков в исходные файлы. Будьте осторожны с дикими картами, поскольку вы можете исключить больше, чем вы планируете.
Мне посчастливилось собрать полную программу без каких-либо инструментов, затем включить инструментарий и перекомпилировать только один файл. Это было для обнаружения утечек, но не для профилирования.
До некоторой степени Инструменты DevPartner кодируют для обнаружения ошибок, охвата или для повышения производительности, и можно исключить определенные пространства имен, определенные исходные файлы и, возможно, даже определенные функции, из инструментовки. Есть даже способ исключить STL через его пространство имен 'std'. Без инструментов, вы не получите профилирование.
Параметр сборки, необходимый для предотвращения появления инструментария, - это / nmignore, который имеет ряд возможных параметров. Я сам им не пользуюсь, поэтому мне придется узнать подробности от парня, который занимается кодом времени компиляции (моя специальность - бэкэнд BoundsChecker).