我的Silverlight项目中存在严重的性能问题,当我运行项目时 CPU使用率上升80% - 90%
计算机停机!!!,这些是该项目的主要特点:
1-我们正在使用 Silverlight 4。
3-我们正在使用 MVVM模式,这意味着所有数据源,状态都是绑定与视图模型中的属性。
4-大多数控件都是在代码中动态创建的。
5-我们在主视图模型中有一个对主控制的引用,它是所有生成控件的容器。
6-在我们的控件中,我们有许多布局(网格)。
7-我们有主视图模型,它是系统中所有子视图模型的容器。
8-我们有很多州和动画。
9-我们不使用中继命令,我们使用常规命令和事件,因此我们引发事件并处理它的父级(我们有很多事件)。
以上是否有任何导致性能问题?我认为Silverlight本身存在问题,是否有任何Silvelight 4更新性能。
我感谢任何帮助,
由于
答案 0 :(得分:0)
复杂的应用程序很可能需要解决性能问题。使用数据绑定和各种事件虽然非常适合构建应用程序,但却很难看到发生了什么。控制流程可能不明显,例如由于级联事件/属性更改,代码可能会多次执行。
我建议使用分析器查看消耗大部分CPU时间的内容 - JetBrains DotTrace是我在Silverlight中使用的内容,有关详情,请参阅other questions。然后你可以专注于问题领域。
如果您的应用程序随着时间的推移逐渐变慢,那么值得调查是否存在内存泄漏。
答案 1 :(得分:0)
你在任何地方使用DropShadowEffect吗?在这种情况下,您可能想尝试删除它们。我曾经遇到过这个问题。一个模板包含一个DropShadowEffect,它使CPU最大化,删除它解决了问题。
答案 2 :(得分:0)
根据我的经验,你的第9点通常是罪魁祸首。
确保在完成课程后释放课程中的事件处理程序。几乎在所有情况下,我都看到Silveright或WPF中的性能下降是对事件代理的不当处理。
正如其中一条评论指出的那样,使用性能分析器,您很可能会发现事件处理程序正在消耗过多的RAM ......这意味着它们应该在它们应用之后,并回应事件。
因此,性能问题源于许多对象或控件留在内存中并响应事件。
这是我最好的猜测。
希望它有所帮助。