Приложение Winform профилирует использование ЦП / скачки

У меня есть приложение winforms, которое обычно занимает около 2-4% ЦП. Мы наблюдаем скачки загрузки ЦП до 27% ограниченное количество раз. Каков наилучший инструмент профилирования, чтобы определить, что на самом деле вызывает этот всплеск. Мы используем dottrace, но я не вижу, как это точно сопоставить с пиками процессора?

Цените помощь

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
3 540
6
Перейти к ответу Данный вопрос помечен как решенный

Ответы 6

Ответ принят как подходящий

Раньше я использовал два инструмента профилирования - профилировщик RedGate ANTS и встроенный профилировщик из Visual Studio Team System.

Прошло некоторое время с тех пор, как я использовал профилировщик RedGate (http://www.red-gate.com/products/ants_profiler/index.htm), хотя совсем недавно я использовал встроенный в Visual Studio 2008.

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

Встроенная версия для Visual Studio доступна только в их высокопроизводительных версиях продукта. Кто-то поправит меня, если я ошибаюсь, но я не думаю, что даже в «Профессиональной» версии есть профайлер. В настоящее время я использую Team System Developer Edition, в которой делает есть инструменты анализа кода.

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

Обновлено: оба инструмента покажут вам использование памяти и количество вызовов определенного метода, а также сколько времени было потрачено на каждый метод. Насколько мне известно, они не показывают использование ЦП в любой момент времени. Однако, вероятно, существует сильная корреляция между использованием ЦП и количеством времени, затрачиваемого на данный блок кода.

Если вы можете последовательно дублировать всплески ЦП, вызывая определенные действия в приложении, то я бы попытался заполучить профилировщик VS, запустить приложение с паузой профилирования, включить профилирование прямо перед тем, как вы сделаете то, что обычно приводит к всплеск и изучите эти результаты.

Это, конечно, предполагает, что у вас есть какое-то детерминированное поведение для воссоздания спайков. Если нет ... вы можете рассматривать поточные процессы или сборку мусора в качестве кандидата на снижение производительности.

Я нашел DevPartner от Compuware http://www.compuware.com/ как отличный инструмент для профилирования. К сожалению, похоже, что в настоящее время они не поддерживают VS 2008.

Кроме того, действительно ли этот всплеск беспокоит? А на каком железе вы это наблюдаете? Повышение до 27% на четырехъядерном процессоре может вызывать беспокойство, но не на 800 МГц P3.

Как долго он остается в шипах? @Matt имеет большое значение, что сборщик мусора может быть виноват. Или, возможно, переключение на диск.

Влияет ли это на общую производительность системы в течение длительного времени или всего на пару секунд время от времени?

Не то чтобы решение этой проблемы не беспокоило, но насколько это важно?

Вы также можете многое узнать о своем приложении с помощью Sysinternal Process Explorer и Perfmon (например, всплеск происходит на GC).

Если ваше приложение является однопоточным, лучший инструмент для профилирования - это ваша IDE.

Добавлено: Может быть, это очевидно, но процент использования ЦП - не очень понятное понятие. Когда ваша программа вообще работает, она на 100%. Когда это не так, это 0%. Таким образом, частичные проценты должны быть основаны на некотором сглаживающем интеграле по времени. Однако, как бы то ни было, вы видите всплеск. Некоторые профилировщики позволяют сосредоточиться на таком всплеске и анализировать именно этот интервал.

Лучший инструмент, который покажет вам всплески и позволит глубже понять, что их вызывает, - это инструменты Xperf / Xperfview.

Проверить http://msdn.microsoft.com/en-us/performance/cc825801.aspx

и http://msdn.microsoft.com/en-us/library/cc305221.aspx

Эти инструменты основаны на технологии ETW (отслеживание событий для Windows), которая дает вам очень точное представление о том, что происходит в вашем процессе и в системе в целом.

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

Была ли эта информация вам вообще полезна?

mfawzymkh 13.06.2009 02:30

Другие вопросы по теме