(495) 925-0049, ITShop интернет-магазин 229-0436, Учебный Центр 925-0049
  Главная страница Карта сайта Контакты
Поиск
Вход
Регистрация
Рассылки сайта
 
 
 
 
 

Visual Studio 2010: работа с новым профайлером

 

Мне уже довелось демонстрировать, как новая итоговая страница профайлера позволяет проще находить и исправлять проблемы производительности, но порой для поиска требуется больше усилий. В этот раз я углублюсь в своем рассказе в другую фичу VS2010, которая называется Function Details View (детали функции).

Снова для демонстрации я буду использовать приложение PeopleTrax, которое вы можете скачать с CodeBox. У меня есть отчет, который я собрал ранее используя функцию CPU Sampling в профайлере, в котором приложение сильно нагружает CPU (по крайне мере на одном ядре).

В этом отчете я смотрю на горячий след (Hot Path) и вижу, что метод People.GetNames вызывает две горячие функции StringReader.ReadLine() и String.Trim().

Мне хочется увидеть эти ресурсоемкие вызовы в моем коде, так что я щелкаю на GetNames (выделено сиреневым выше) чтобы вывести окно с деталями функции.

Здесь есть несколько вещей, на которые стоит обратить внимание:

  • в заголовке указано наименование метода People.GetNames();
  • с помощью нисподающего меню можно переключаться между "Inclusive Samples %" и "Inclusive Samples";
  • синие плашки показывают функции, которые вызывают метод People.GetNames() или вызываются им;
  • интересующий меня код показан с подсветкой и аннотацией;
  • в представлении по умолчанию нам может потребоваться раздвинуть окно, чтобы увидеть весь код. Вместо этого, можно воспользоваться кнопкой Split Screen Vertically и изменить представление.

Теперь, на правой стороне представления, мы четко видим где происходят ресурсоемкие вызовы функций ReadLine() и Trim() в нашем коде. Кроме того, у нас в наличии есть таблица метрик в секции Function Performance Details и некоторые полезные по теме ссылки.

Теперь, давайте взглянем на синие плашки. Левая плашка показывает методы, которые вызывают нашу функцию. Высота плашки представляет относительную стоимость в текущей выбранной метрике (в данном случае - Inclusive Samples). Так как в этом случае есть всего один вызывающий метод, он занимает всю площадь плашки.

Справа другая плашка, которая содержит следующие секции:

  • Function Body (87 экземпляров). Высота этой секции показывает относительное число экземпляров внутри самой функции.
  • ReadLine (727 экземпляров). Это функция с самым большим числом экземпляров (Inclusive Samples). Из-за этого высота этой секции самая большая.
  • Trim (642 экземпляров). Функция вторая по количеству экземпляров (Inclusive Samples). Немного меньшая высота секции.
  • и другие функции с меньшим числом экземпляров.
Каждая из этих секций (кроме Function Body) кликабельна, что позволяет производить навигацию по вызывающим или вызываемым методам.

Изучив код я не могу найти простого решения для его упрощения, я не могу контролировать работу Trim() или ReadLine(), так что давайте перейдем на один уровень выше в вызывающих функциях, щелкнув на GetPeople (это единственная функция, которая вызывает наш метод GetNames - прим. перев.).

Нажатие на GetPeople приводит к переходу на детали для данной функции:

Из кода на правой стороне мы можем узнать, что два подсвеченных вызова метода GetNames формируют 89.2% вызовов (экземпляров). Из-за того, что используется цикл, наверняка лучшей идеей будет вынести вызовы GetNames из цикла. Те кто изучают приложение PeopleTrax, знают, что первой оптимизацией для этого приложения является кеширование вызова GetNames в конструкторе. Следующим шагом исследования будет изменение кода, сбор новой информации профилирования и сравнения отчетов, но это я оставлю для вас.

Имейте в виду: информация уровня строк кода доступна только в режиме профилирования CPU Sampling и недоступна в режиме Instrumentation mode. Подсветка и аннотации так же недоступны в режиме Instrumentation mode.

Ссылки по теме


 Распечатать »
 Правила публикации »
  Написать редактору 
 Рекомендовать » Дата публикации: 15.03.2010 
 

Магазин программного обеспечения   WWW.ITSHOP.RU
Microsoft 365 Business Basic (corporate)
Microsoft Office 365 Профессиональный Плюс. Подписка на 1 рабочее место на 1 год
Microsoft 365 Apps for business (corporate)
Microsoft Windows Professional 10, Электронный ключ
Microsoft 365 Business Standard (corporate)
 
Другие предложения...
 
Курсы обучения   WWW.ITSHOP.RU
 
Другие предложения...
 
Магазин сертификационных экзаменов   WWW.ITSHOP.RU
 
Другие предложения...
 
3D Принтеры | 3D Печать   WWW.ITSHOP.RU
 
Другие предложения...
 
Новости по теме
 
Рассылки Subscribe.ru
Информационные технологии: CASE, RAD, ERP, OLAP
Безопасность компьютерных сетей и защита информации
Новости ITShop.ru - ПО, книги, документация, курсы обучения
Программирование на Microsoft Access
CASE-технологии
Компьютерные книги. Рецензии и отзывы
Вопросы и ответы по MS SQL Server
 
Статьи по теме
 
Новинки каталога Download
 
Исходники
 
Документация
 
 



    
rambler's top100 Rambler's Top100