dotTrace - какие настройки профилирования я должен использовать для своего настольного приложения? - PullRequest
5 голосов
/ 05 марта 2012

При использовании dotTrace мне нужно выбрать режим профилирования и метод измерения времени. Режимы профилирования :

  • Трассировка
  • Построчная
  • Выборка

И Методы измерения времени :

  • Время стены (счетчик производительности)
  • Время резьбы
  • Время стены (инструкция ЦП)

Трассировка и строка за строкой не могут использовать измерение времени потока.Но это все еще оставляет мне семь разных комбинаций, чтобы попробовать.Я уже более десятка раз читал справочные страницы по dotTrace, и я остаюсь не более осведомленным, чем начинал с того, какой из них выбрать.

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

Какие типы профилирования и измерения времени дадут мне наилучшие результаты?Или, если ответ «Это зависит», то от чего это зависит?Каковы плюсы и минусы данного режима профилирования или метода измерения времени?

1 Ответ

6 голосов
/ 11 марта 2012

Типы профилирования:

  • Выборка : самый быстрый, но наименее точный тип профилирования, минимальные накладные расходы профилировщика. По существу эквивалентно многократному приостановлению программы и просмотру трассировки стека; таким образом, количество вызовов на метод является приблизительным. Все еще полезно для определения узких мест производительности на уровне метода.

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

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

  • Построчно : Профилирует программу для каждой строки. Крупнейший ресурсный боров, но самые мелкие результаты профилирования. Замедляет программу в сторону вниз. Предпочтительной тактикой здесь является первоначальное профилирование с использованием другого типа, а затем функции ручного выбора для построчного профилирования.


Что касается видов счетчиков, я думаю, что они довольно хорошо описаны в Начало работы с dotTrace Performance великим Хади Харири.

Время стены (Инструкция по использованию процессора) : Это самый простой и быстрый способ измерения времени стены (то есть время мы наблюдаем на настенных часах). Однако на некоторых старых многоядерных процессорах это может привести к неверные результаты из-за десинхронизации основных таймеров. Если это так, то рекомендуется использовать Performance Counter.

Время стены (счетчик производительности) : счетчики производительности являются частью Windows API и позволяют взятие временных проб аппаратно-независимым способом. Однако, будучи вызовом API, каждая мера требует значительное время и, следовательно, влияет на профилированное приложение.

Время потока : В многопоточном приложении параллельные потоки влияют на время взаимодействия друг с другом. Чтобы избежать таких помех, мы можем использовать измеритель времени потока, который выполняет системные вызовы API для получения количество времени, предоставляемое планировщиком ОС потоку. Недостатки в том, что нужно время сэмплы намного медленнее, чем при использовании счетчика ЦП, а точность также ограничена размером квант, используемый планировщиком потока (обычно 10 мс). Этот режим поддерживается только при профилировании Тип установлен на выборку

Однако они не сильно отличаются.


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

...