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

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

50 голосов
/ 21 октября 2008

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

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

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

То же самое с изменением значений на странице. Все в пользовательском интерфейсе WPF вялое.

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

Мой вопрос:

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

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

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

Ответы [ 8 ]

37 голосов
/ 23 октября 2008
  1. Как вы ускоряете WPF?

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

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

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

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

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

6 голосов
/ 21 октября 2008

Установить SP1 ... Нагрузка очень крутой производительности увеличивается для WPF !!!

Подробнее здесь

Вот пример 2 улучшений, сделанных в SP1: Задержка прокрутки и повторное прохождение элемента интерфейса !!!

5 голосов
/ 02 июня 2010

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

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

2 голосов
/ 21 октября 2008

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

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

1 голос
/ 16 февраля 2009

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

1 голос
/ 21 октября 2008

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

0 голосов
/ 23 июня 2009

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

0 голосов
/ 21 октября 2008

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

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

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

НТН

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