Работа на экранной заставке для моей жены, http://cchearts.codeplex.com/, и, хотя мне удалось улучшить FPS на нижних конечных машинах, использование процессора по-прежнему кажется очень высоким.WPF Animation FPS против использования ЦП - Ожидаю ли я слишком много?
Вот некоторые цифры, я выбежала из нескольких 5 минутных периодов дискретизации:
~ 60FPS 35% среднего процессора на Core 2 Duo T7500 @ 2.2GHz, 3GB RAM, NVIDIA Quadro NVS 140M (128 Мб), Vista [My DEV ноутбук]
~ 40fps 50% средняя загрузка процессора Pentium D @ 3.4GHz, 1.5GB RAM, Стандартный VGA графический адаптер (неизвестен), 2003 Сервер [дерьмовый рабочий стол]
Я понимаю нижнюю частоту кадров и более высокий уровень использования ЦП на дерьмовом рабочем столе, но он все еще кажется довольно высоким, а 35% на моем ноутбуке для разработчиков также кажется высоким.
Мне бы очень хотелось проанализировать приложение, чтобы получить более подробную информацию, но у меня возникают проблемы, поэтому мне интересно, не делаю ли я что-то неправильно (никогда не профилировал WPF раньше).
WPF Performance Suite:
Процесс запуска Ошибка
Невозможно подключиться к процессу: CCHearts.exe ли вы хотите, чтобы убить его?
Это сообщение об ошибке возникает, когда я нажимаю Отменить после попытки запуска. Если я не нажимаю «Отменить», он сидит там без дела, я думаю, ожидаю, чтобы прикрепить.
Performance Explorer:
Не удалось запустить C: \ Projects2 \ CC.Hearts \ CC.Hearts \ Bin \ Debug (USEVISUAL) \ CCHearts.exe. Предыдущая попытка профилировать приложение завершилась неудачно. Перезагрузите приложение.
Окно вывода из спектакля:
Профилирование начал. Процесс профилирования ID 5360 (CCHearts). Вышел процесс ID 5360. Данные, записанные на C: \ Projects2 \ CC.Hearts \ CCHearts100608.vsp. Профилирование завершено. PRF0025: Данные не были собраны. Профилирование завершено.
Таким образом, я застреваю, желая улучшить производительность, но не имея конкретного способа определить, где находится узкое место. Были относительно успешные метание дротиков в этот момент, но теперь я за что :)
Резюме:
Лота прогресса до сих пор ...
Performance Explorer,
Проблема: не работало, расплывчатое сообщение об ошибке.
Решение: Использовал command line version получить сообщение об ошибке, что реальная указал мне на этот thread указывая на то, что это был Symantec длл блокирует меня. Настройка следующий раздел реестра исправили проблему:
[HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ Services \ SysPlant]
"Start" = DWORD: 00000004
WPF Performance Suite
Problem : Не работает, нет сообщения об ошибке.
Решение: Используйте WPF Performance Suite предназначен для .NET 4 из Windows SDK 7.1 вместо предыдущей версии из Windows SDK 7 (я чувствую себя глупо :-P)
WPF анимация
Проблема: Высокое использование ЦП по сравнению с FPS/обработанной рабочей нагрузкой.
Решение: Локально тонкие настройки здесь и там. Но HUGE улучшение было Cached Composition как указано Джеремией Моррилл. Проверьте changesets.
На двухъядерном процессоре Core 2 Duo E6600/GeForce 8800GT (с разрешением 1920x1200 пикселей) экранная заставка работает плавно при 60 FPS при среднем использовании процессора 10-15%. Я бы не стал сильно беспокоиться. Попробуйте установить «RenderOptions.CachingHint» в Cache в ваших сердцах, хотя с тех пор, как вы используете WPF 4. –
Спасибо, что посмотрели, и хорошо знать, что он хорошо работает на другой машине. Основная причина, по которой я пытаюсь выжать из нее больше производительности, - это то, что он пинает вторичные охлаждающие вентиляторы на «дрянной настольной системе», упомянутой выше. Это похоже на чрезмерное использование энергии для приложения, предназначенного для запуска, когда ПК неактивен. В любом случае я очень заинтересован в том, чтобы выяснить, что мешает мне получить возможность профилировать. –