Application.Run - это главная функция, потребляющая процессор в моем приложениичто я могу оптимизировать? - PullRequest
6 голосов
/ 01 февраля 2012

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

Профилирование этого процесса показало, что Application.Run - это функция, выполняющая большую часть работы, на 43%, с «вторым самым дорогим» местом, разделяемым тремя графическими API, каждый на 6%.

Что я мог бы сделать, что бы потратить столько времени на Application.Run? Кажется, что ядром этого метода является запуск основного диспетчера для моего приложения, но это не помогает мне понять, что именно диспетчер делает так много. Можно ли получить более мелкозернистый профиль?

Примечание: я имею в виду System.Windows.Application.Run.

1 Ответ

4 голосов
/ 01 февраля 2012

Оказывается, что Visual Profiler (часть WPF Performance Suite ) может предоставить более подробное описание использования ЦП:

CPU usage breakdown

Это показывает, что половина этого необъяснимого использования ЦП приходится на поток рендеринга (поэтому, возможно, мне следует обновлять пользовательский интерфейс реже), а большая часть остального расходуется на мой обратный вызов Invoke (что в моем случае неизбежно).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...