VS 2010 Performance Explorer - PullRequest
       10

VS 2010 Performance Explorer

5 голосов
/ 31 марта 2011

Я начинаю изучать профилировщик производительности в VS 2010, и мне трудно найти его полезным.Я понимаю, что это, скорее всего, потому что я не знаком с инструментом.

То, что я ищу, - это способ определения наиболее трудоемких вызовов методов.В большинстве случаев он просто определяет методы ASP.NET как худшие нарушители, такие как ProcessRequest и т. Д., И его сложно сузить до фактического метода, который занимает так много времени.

Я хотел бы просто определить вызовы в моем коде, которые выполняются дольше всего.

Любые указатели будут оценены.Спасибо!

1 Ответ

2 голосов
/ 05 апреля 2012

Я знаю, что это старый вопрос, но несколько советов, которые, я надеюсь, помогут вам или другим:

Начиная с приостановки Profiler.

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

  • Из меню,выберите «Анализ»> «Профилировщик»> «Начать с приостановленного профилировщика»
  • Затем перейдите на своем веб-сайте к точке, которая будет до страницы, которую вы хотите профилировать
  • Теперь в VS2010 на странице профилировщиканажмите «Возобновить», чтобы начать профилирование
  • Вернувшись на свой веб-сайт, нажмите ссылку или кнопку и т. д., чтобы загрузить страницу, которую вы хотите профилировать
  • Подождите, пока она загрузится, затем вернитесь в VS2010,нажмите «Остановить профилирование»
  • Через несколько секунд будет загружена сводка вашего профиля.

Поиск узких мест с помощью «Горячего пути»

  • После загрузки резюме профиля, chизменить текущее представление на дерево вызовов
  • Нажмите «Развернуть горячий путь» (кнопка со значком пламени)
  • Это покажет вам функцию с наихудшим временем и стек вызовов, ведущий к ней

Интерпретация данных

  • Во втором столбце цифр («Истекшее исключительное время») показано время, потраченное на эту конкретную функцию (методи т. д.) , исключая вызовов, которые она выполняет для других функций.
  • В столбце от второго до последнего («Количество вызовов») указывается, сколько раз была вызвана эта конкретная функция.
  • Комбинация этих двух столбцов может быть большой подсказкой о том, где находится узкое место.
  • Например, вы можете обнаружить, что функция System.Linq.Queryable. [Что-то] занимает большую часть общеговремя и вызывается 10 или 100 раз ... Если это так, то возможно, что уточнение вашего кода для его рационализации с целью сокращения общего количества вызовов поможет ...
  • Иду обратноДерево скажет вам, какая функция спровоцировала вызовы в эту функцию узкого места и, в свою очередь, какая функция вызвала эту функцию и т. д.

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

Надеюсь, это поможет в началеВы или другие, кто сталкивался с этим (общим) вопросом.

...