(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 Standard (corporate)
Microsoft Office 365 Бизнес. Подписка на 1 рабочее место на 1 год
Microsoft Office для дома и учебы 2019 (лицензия ESD)
Microsoft Office 365 Профессиональный Плюс. Подписка на 1 рабочее место на 1 год
Microsoft 365 Apps for business (corporate)
 
Другие предложения...
 
Курсы обучения   WWW.ITSHOP.RU
 
Другие предложения...
 
Магазин сертификационных экзаменов   WWW.ITSHOP.RU
 
Другие предложения...
 
3D Принтеры | 3D Печать   WWW.ITSHOP.RU
 
Другие предложения...
 
Новости по теме
 
Рассылки Subscribe.ru
Информационные технологии: CASE, RAD, ERP, OLAP
Безопасность компьютерных сетей и защита информации
Новости ITShop.ru - ПО, книги, документация, курсы обучения
Программирование на Microsoft Access
CASE-технологии
Delphi - проблемы и решения
Corel DRAW - от идеи до реализации
 
Статьи по теме
 
Новинки каталога Download
 
Исходники
 
Документация
 
 



    
rambler's top100 Rambler's Top100