Настройка производительности с использованием инструментальной модели - PullRequest
2 голосов
/ 10 марта 2009

Если я использую описанную здесь инструментальную модель для профилирования производительности приложения .Net, это означает, что инструмент профиля изменит исполняемый код исполняемого файла для профилирования, чтобы вставить код показателя производительности? То есть мой исходный исполняемый код был изменен?

http://msdn.microsoft.com/en-us/library/ms242753(VS.80).aspx

С уважением, George

Ответы [ 3 ]

1 голос
/ 10 марта 2009

Да; инструментальный код отличается от неструктурированного кода. А это означает, что вы должны быть слегка осторожнее с результатами - но большинство профилировщиков делают разумную работу, чтобы обратить ваше внимание на важные моменты. У меня никогда не было особой удачи с опцией отбора проб - хотя инструменты часто были полезны. Лично мне нравится предложение jetBrains .

0 голосов
/ 06 апреля 2009

Да, при инструментировании профилировщик собирается изменить ваш код с помощью дополнительных инструкций для сбора и отслеживания необходимых данных о производительности. Вы никогда не захотите распространять инструментальную версию своих сборок, и вы не захотите использовать инструментальные сборки для отладки (поскольку критические секции / условия гонки / и т. Д., Безусловно, могли бы вести себя по-другому, учитывая дополнительные инструменты).

При этом, контрольно-измерительные приборы могут быть очень ценными для целей, предназначенных для профилирования. Собирая фактические данные и изолируя дорогостоящие операции, усилия по оптимизации могут быть соответствующим образом сфокусированы, а результаты могут быть точно измерены - избегая потерянного времени, повышенной сложности, уменьшенного обслуживания и всех других проблем, связанных с преждевременной оптимизацией.

0 голосов
/ 03 апреля 2009

Режим сэмплирования - это когда вам нужно знать «горячие области» в вашем коде, он не изменяет ваш код, он просто пробует текущий стек вызовов всех работающих потоков. Если ваши потоки неактивно спят или ждут ресурс (мьютекс, событие и т. Д.), Он будет считаться горячей областью. Вы хотите использовать этот режим для измерения нагрузки.
Режим Instrumnation (трассировка) будет измерять, сколько времени (в циклах) тратится на каждый метод.
Он должен обрабатывать ваш код (используя символы отладки), но в конце он исключает накладные расходы, которые он накладывает на систему. Вы хотите использовать этот режим для измерения одного процесса.

...