Как ускорить программы WPF?

Мне нравится программировать и для Windows Presentation Framework. В основном я пишу браузерные приложения, используя WPF и XAML.

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

Загрузка такой страницы может занять более одной секунды. Секунды, действительно, особенно на не очень быстрых компьютерах (читай: компьютеры клиентов), это может занять годы.

То же самое с изменением значений на странице. Все об интерфейсе WPF как-то неаккуратно.

Это так скучно! Они дают мне эту прекрасную структуру, но делают ее настолько мучительно медленной, поэтому я должен буду извиняться перед нашими клиентами все время!

Мой вопрос:

  • Как ускорить WPF?
  • Как вы определяете узкие места?
  • Как вы справляетесь с медлительностью?

Поскольку это, кажется, универсальная проблема с WPF, я ищу общие советы, полезные для многих ситуаций и проблем.

Некоторые другие связанные вопросы:

Ответ 1

  • Как ускорить WPF?

    Часто после использования одного из следующих инструментов профилирования очевидно, что вызывает мои узкие места.

    • Если проблема с памятью, я виртуализую свои данные.
    • Если время рендеринга является проблемой, я виртуализую элементы управления или упрощаю шаблоны управления, где это возможно.
    • Если время обработки - проблема, я пытаюсь улучшить свой алгоритм или переместить эту работу в фоновый поток и показать throbber в моем ui во время работы.

  • Как вы определяете узкие места?

  • Как вы справляетесь с медлительностью?

    Профилирование и консультирование.

Ответ 3

Я не могу добавлять комментарии, поэтому я публикую новый ответ на этот вопрос: я нашел это видео с pdc09, которое дает некоторые идеи о том, как профилировать приложения wpf, и потому, что это помогло мне, я хочу поделиться ссылка:

Расширенная настройка и анализ производительности приложений WPF

Ответ 5

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

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

Ответ 6

избежать анимации также помогает много иногда. если вам нужно использовать анимацию, уменьшите частоту кадров, это улучшит производительность "Feeled".

Ответ 7

Удалить эффекты альфа-прозрачности/растрового изображения.

Ответ 8

можете ли вы дать более подробную информацию?

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

Кроме этого, я заметил только медленную производительность при первой загрузке приложения.

НТН

Ответ 9

Я считаю полезным использовать шаг XAML и писать весь интерфейс в С#. Это позволяет мне точно контролировать, когда элементы управления создаются и загружаются. Это также помогает мне понять, что делает XAML "под обложками".