Что может вызвать снижение производительности после переноса проекта WPF с 3.5 на 4.0? - PullRequest
4 голосов
/ 18 ноября 2010

Когда я компилирую свое приложение для целевой версии 4.0 платформы, производительность пользовательского интерфейса идет к черту. Например, открытие Expander, который содержит сетку с, возможно, 6 элементами управления Label и TextBox, идет от почти мгновенного до 3-4 секунд, и затем появляется видимая задержка между временем рендеринга второго столбца сетки (редактируемые элементы управления) и первый (их ярлыки).

Если я вернусь к 3.5, все вернется к тому, что было: практически нет лага между открытием Expander и просмотром его содержимого, а метки в сетке отображаются так быстро, что вы не можете увидеть, как это происходит.

Есть, конечно, миллион вещей, которые могут это вызвать. Я думаю, что я надеюсь, что кто-то может сказать мне, где я должен начать искать. Мне не особенно нужно для обновления до 4.0 прямо сейчас, поэтому у меня нет большого стимула копаться в профилировании этого зверя, но если я накапливаю технический долг, пока я сижу здесь на 3,5, я Хотелось бы узнать об этом.

Ответы [ 3 ]

3 голосов
/ 23 ноября 2010

Это действительно странное явление, теперь я перенес два тяжелых приложения WPF3 на 4 без проблем (не обращая внимания на пару проблем с ресурсами), но если что-то и улучшило нашу производительность во время выполнения, то неплохо.

Хотя это и не было прямым ответом на ваш вопрос, я следовал за написанием Пола Харрингтона , когда мы перешли на WPF 4. Я также провел довольно много времени с инструментом WPFPerf - Я понимаю, что вы не хотите в профиль!

Единственное, о чем я могу думать, это изменение уровней рендеринга графики в WPF4 vs WPF3.5 . Это заставило одного из тестировщиков понять, что его тестовая коробка работала в программном рендеринге (аппаратное ускорение было отключено из-за плохого обновления графического драйвера). RenderOptions.ProcessRenderMode это ваш друг, чтобы проверить. Но я предполагаю, что вы все равно будете работать на приличной комплектации:)

2 голосов
/ 23 ноября 2010

Вы, вероятно, используете DLL-библиотеку, скомпилированную для .NET 3.5, которая заставляет загружать множество DLL-библиотек 3.5, как только создается один из нужных типов.Убедитесь, что все ваши библиотеки DLL только для 4.0.

0 голосов
/ 18 ноября 2010

Может быть, вы используете или неправильно используете одну из новых функций WPF 4.0?

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

Что нового в WPF 4.0 (список)

...