Пытаясь модернизировать внешний вид старого приложения C ++ Builder / Delphi, я включил визуальные темы ( визуальные стили ) и был удивлен, насколько много добавлено тем, влияющих на производительность. Например, для нашей основной страницы настройки (диалоговое окно «Монстр из 200 элементов управления» с 11 вкладками, которое мы не хотим сейчас переделывать по причинам времени разработки и затрат на переподготовку):
- Без включенных тем: ~ 0,1 с для построения формы и ее элементов управления (как измерено QueryPerformanceCounter), ~ 0,9 с от щелчка по элементу меню до отображаемой формы ( как измерено секундомером). Не очень заметно для конечного пользователя.
- При включенных темах: ~ 0,6 с для создания формы и элементов управления, ~ 1,5 с от щелчка по элементу меню до отображаемой формы. Очень заметно для конечного пользователя.
Я получаю похожие результаты как на рабочем столе Windows XP, так и на виртуальной машине Windows 7.
Я понимаю, что есть шаги, которые можно предпринять для улучшения этого конкретного случая (например, ленивая загрузка вкладок диалогового окна или его полная переработка), но характерно ли для тем добавление такого заметного снижения производительности? Есть ли какие-нибудь легкие предложения, чтобы избежать удара по производительности?