Проблема производительности Silverlight! - PullRequest
0 голосов
/ 11 марта 2011

У меня серьезная проблема с производительностью в моем проекте Silverlight, когда я запускаю свой проект, загрузка ЦП возрастает на 80% - 90%

компьютер выключается !!!, это главная особенность проекта:

1- Мы используем Silverlight 4.

3- Мы используем шаблон MVVM , что означает, что все источники данных имеют состояния Связывание со свойствами в модели представления.

4- Большинство элементов управления динамически создаются в коде.

5- У нас есть ссылка для основного элемента управления в модели основного вида, которая является контейнером всего сгенерированного элемента управления.

6- В нашем контроле у ​​нас есть много макетов (Сетки).

7 - у нас есть модель основного вида, которая является контейнером всех моделей дочерних видов в системе.

8 - У нас много состояний и анимаций .

9- Мы не используем команды ретрансляции , мы используем обычные команды и события, поэтому мы вызываем событие и обрабатываем его родитель (у нас много событий).

Есть ли что-либо из перечисленного выше, вызывающее проблему с производительностью ??? Я думаю, что проблема в самом Silverlight, есть ли обновление Silvelight 4 для повышения производительности.

Я ценю любую помощь,

Спасибо

Ответы [ 3 ]

0 голосов
/ 11 марта 2011

Используете ли вы DropShadowEffect в любом месте?В этом случае вы можете попробовать удалить их.У меня была эта проблема однажды.Шаблон включал в себя DropShadowEffect, который позволял максимально использовать процессор, устраняя его, решая проблему.

0 голосов
/ 11 марта 2011

По моему опыту, ваш девятый пункт обычно является виновником.

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

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

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

Это мое лучшее предположение.

Надеюсь, это поможет.

0 голосов
/ 11 марта 2011

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

Я бы порекомендовал использовать профилировщик для просмотра того, что потребляет больше всего процессорного времени - JetBrains DotTrace - это тот, который я использовал с Silverlight, см. другие вопросы для получения дополнительной информации. Тогда вы можете сосредоточиться на проблемных областях.

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

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