Поделиться через


Оптимизация производительности. Дополнительные рекомендации

Обновлен: Ноябрь 2007

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

В этом разделе содержатся следующие подразделы.

  • Сравнение прозрачности кисти с прозрачностью элементов
  • Переход к объекту
  • Проверка попадания курсора мыши на больших трехмерных поверхностях
  • Событие CompositionTarget.Rendering
  • Избегайте использования ScrollBarVisibility=Auto
  • Настройка службы кэширования шрифтов для сокращения времени загрузки
  • Улучшение отображения терминальных служб
  • Связанные разделы

Сравнение прозрачности кисти с прозрачностью элементов

При использовании Brush для установки свойства Fill или Stroke элемента лучше установить значение Brush.Opacity вместо свойства элемента Opacity. Изменение свойства элемента Opacity может вызвать среду WPF для создания временной поверхности.

Переход к объекту

Объект NavigationWindow является производным от Window и расширяет его возможностью навигации по содержимому, главным образом, статистической обработкой NavigationService и журналированием. Можно обновить клиентскую область NavigationWindow, указав URI (uniform resource identifier — универсальный код ресурса) или объект. В следующем примере демонстрируются оба способа.

private void buttonGoToUri(object sender, RoutedEventArgs args)
{
    navWindow.Source = new Uri("NewPage.xaml", UriKind.RelativeOrAbsolute);
}

private void buttonGoNewObject(object sender, RoutedEventArgs args)
{
    NewPage nextPage = new NewPage();
    nextPage.InitializeComponent();
    navWindow.Content = nextPage;
}

Каждый объект NavigationWindow имеет журнал, в котором регистрируется история переходов данного пользователя в этом окне. Одной из целей создания журнала является возможность разрешить пользователям повторять действия.

При переходе с помощью URI (uniform resource identifier — универсальный код ресурса) журнал сохраняет только ссылку URI (uniform resource identifier — универсальный код ресурса). Это означает, что каждый раз при повторном посещении страницы, она динамически перестраивается за время, зависящее от сложности страницы. В этом случае затраты на хранение журнала незначительны, а скорость воссоздания страниц является потенциально высокой.

При переходе с помощью объекта, в журнал сохраняется полное визуальное дерево объекта. Это означает, что при каждом повторном посещении страницы она отображается немедленно без необходимости реконструирования. В этом случае затраты на хранение журнала высоки, а скорость воссоздания страниц мала.

При использовании объекта NavigationWindow необходимо учитывать влияние журналирования на производительность приложения. Дополнительные сведения см. в разделе Общие сведения о переходах.

Проверка попадания курсора мыши на больших трехмерных поверхностях

Проверка попадания курсора мыши на больших трехмерных поверхностях является операцией, очень затратной по производительности и загрузке процессора. Особенно это относится к анимированным трехмерным поверхностям. Если проверка попадания курсора на этих поверхностях не требуется, то ее следует отключить. Объекты, производные от UIElement, могут отключить проверку, установив для свойства IsHitTestVisible значение false.

Событие CompositionTarget.Rendering

Событие CompositionTarget.Rendering вызывает среду WPF для поддержки постоянной анимации. Если это событие используется, отключайте его при каждой возможности.

Избегайте использования ScrollBarVisibility=Auto

Везде, где это возможно, избегайте использования значения ScrollBarVisibility.Auto для свойств HorizontalScrollBarVisibility и VerticalScrollBarVisibility. Эти свойства определены для объектов RichTextBox, ScrollViewer и TextBox и в качестве вложенного свойства для объекта ListBox. Вместо этого установите для свойства ScrollBarVisibility значение Disabled, Hidden или Visible.

Значение Auto предназначено для случаев, когда пространство ограничено и полосы прокрутки должны отображаться только при необходимости. Например, значение ScrollBarVisibility может использоваться для элемента ListBox с 30-тью элементами в списке, в отличие от TextBox с сотнями строк текста.

Настройка службы кэширования шрифтов для сокращения времени загрузки

Служба кэширования шрифтов WPF совместно используется для обработки данных шрифтов приложениями WPF. Первое запускаемое приложение WPF запускает эту службу, если она еще не запущена. При использовании Windows Vista можно изменить установку службы «WPF (Windows Presentation Foundation) Font Cache 3.0.0.0» из режима «Вручную» (по умолчанию) на «Автоматически (отложенный запуск)», чтобы уменьшить длительность начального запуска приложений WPF.

Улучшение отображения терминальных служб

Подключение к удаленному рабочему столу позволяет клиенту удаленно запускать приложения на сервере при их отображении на стороне клиента. Сервер может быть либо сервером терминалов Windows, который способен одновременно поддерживать несколько подключений к удаленному рабочему столу, или версией Windows, которая может обслуживать одно подключение к удаленному рабочему столу. Когда пользователь запускает приложение через подключение к удаленному рабочему столу, приложение выполняется на сервере; действия клавиатуры и мыши на стороне клиента передаются на сервер, в то время как необходимый Пользовательский интерфейс приложения отображается на сервере как точечные рисунки, передаваемый клиенту.

При отправлении точечных рисунков по сети клиенту для имитации пользовательского интерфейса производительность не будет такой же, как при локальном отображении Пользовательский интерфейс на стороне клиента. К счастью, приложения WPF, работающие через сеанс RDC (Remote Desktop Connection — подключение к удаленному рабочему столу), могут воспользоваться преимуществами специальной поддержки отображения Windows Vista для отображения на стороне клиента.

Для того чтобы воспользоваться этими преимуществами, требуется следующее:

  • на сервере должна быть установлена ОС Windows Vista Ultimate Edition или Windows Vista Enterprise Edition;

  • сервер должен иметь достаточно памяти, чтобы соответствовать требованиям диспетчера окон рабочего стола (DWM) к объему памяти (другим требованиям DWM, например, требованиям для видеоадаптеров, сервер может не соответствовать);

  • клиент должен иметь то же построение Windows Vista, что и сервер;

  • клиент должен иметь возможность запустить диспетчер окон рабочего стола Windows Vista. Диспетчер окон рабочего стола включается при запуске службы диспетчера сеансов диспетчера окон рабочего стола;

  • на клиенте не должны работать приложения, которые могут отключить диспетчер, такие как «Конференц-зал» или «Удаленный помощник»;

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

  • конфигурация подключения к удаленному рабочему столу клиента должна включать следующее:

    • вариант Композиция рабочего стола должен быть выбран в меню Подключения к удаленному рабочему столу | Параметры | Дополнительно,

    • вариант Темы должен быть выбран в меню Подключение к удаленному рабочему столу | Параметры | Дополнительно,

    • вариант 32-разрядная цветопередача должен быть выбран в меню Подключения к удаленному рабочему столу | Параметры | Экран | Цвета.

Bb613584.alert_note(ru-ru,VS.90).gifПримечание.

Требования диспетчера окон рабочего стола см. в правилах Windows Vista для включения темы Windows Aero.

См. также

Основные понятия

Планирование производительности приложения

Оптимизация производительности. Использование преимуществ аппаратного ускорения

Оптимизация производительности: разметка и разработка

Оптимизация производительности: двумерная графика и обработка изображений

Оптимизация производительности: поведение объекта

Оптимизация производительности: ресурсы приложения

Оптимизация производительности: отображение текста

Оптимизация производительности: привязка данных

Средства и ресурсы обеспечения производительности WPF

Советы и рекомендации по анимации