Возможно, некоторые способы включить и отключить профилирование из кода?
Или вы можете выбрать определенную функцию для профиля?
Возможно, некоторые способы включить и отключить профилирование из кода?
Или вы можете выбрать определенную функцию для профиля?
Вы также можете использовать API сбора данных профилировщика, чтобы начать и прекратить профилирование вокруг интересующих вас методов. См. эту статью MSDN для прохождений.
Лучший способ использования API в этом случае - вызвать StartProfile
непосредственно перед выполнением ваших методов, а затем вызвать StopProfile
сразу после. Вы должны начать профилирование с помощью параметра "Начать с профилированием", чтобы вы не запускали профилирование, пока не нажмете первый вызов на StartProfile
.
Использование API сбора данных будет работать с выборкой или инструментами.
Да, с небольшим усилием, вы можете сделать это, если вы выполняете профилирование (не сэмплирование):
/include:ConsoleApp.Program::Main,MyNamespace.MyClass::MyFunc
)Синтаксис /include
немного странный, но если вы запустите командную строку VS и перейдите в свою двоичную директорию, вы можете запустить vsinstr.exe /dumpfuncs foo.exe
, чтобы просмотреть список методов, которые вы можете явно включить.
Подробнее см. синтаксис командной строки vsinstr.exe.
Не.
Вы ищете "узкое место", верно?
Вероятно, это не функция, в которой вы думаете.
Это метод, на который я полагаюсь, для любого языка или ОС.
Если проблема в этой функции, она скажет вам. Если это где-то в другом месте, это скажет вам.
@downvoter: Какая проблема? Если вас беспокоит скорость запуска приложения, вручную отбирайте образцы во время запуска приложения.
Альтернатива в профилировщике заключается в том, чтобы запускать ее в течение всего времени, а затем попытаться выяснить, какой частью временной шкалы был запуск. И поскольку большая часть времени проводится в режиме ожидания пользователя, когда вам не нужны сэмплы, вы помещаете его в режим выборки процессора. Проблема в том, что вы не видите такие вещи, как время ввода-вывода, затраченное на загрузку DLL, запрос DNS и т.д., Которые могут быть доминирующими во время запуска.
Тогда возникла вся проблема глупости презентации, например, "горячий путь", где истинный таймер может легко скрыть.
В случае, если вы спрашиваете: "Как я могу просмотреть тысячи образцов стека?" ответ вам не нужно. Если стартап заметно медленный, это потому, что он тратит значительную часть своего времени на то, что ему не нужно делать - часть, например, 30%, будет консервативной. Это означает, что вы увидите это, в среднем, каждые 3,33 образца. Поскольку вам нужно видеть это два или более раза, чтобы знать, что это проблема, в среднем вам нужно 667 образцов. Чем больше проблема, тем меньше образцов вам нужно. (Если это 90%, вам нужно всего 2/0,9 = 2,2 образца.) Если вы проанализируете 20 образцов, вы увидите, что проблема будет стоить более 10%, и если вы ее исправите, все меньшие проблемы будут иметь больший процент - они усиливаются коэффициентом ускорения, поэтому их легче найти на следующем пути -вокруг. Здесь математика.