WPF 的高 CPU 使用率

Posted

技术标签:

【中文标题】WPF 的高 CPU 使用率【英文标题】:High CPU usage with WPF 【发布时间】:2012-04-11 12:59:31 【问题描述】:

在我的 WPF 项目中,如果我打开一个窗口,cpu 使用率大约是 30%-50%,但是当我最小化这个窗口时,cpu 使用率下降到 1%。有人知道原因吗?谢谢

【问题讨论】:

信息不足。既然我们在这里猜测,我猜你有一个动画正在运行;并且由于某种原因或其他原因,它在计算上很困难。我记得我第一次尝试“加载指示器”——在后台加载内容时旋转的微调器需要整个核心来渲染。我把它留在里面了,真是讽刺。 【参考方案1】:

您的屏幕上有很多绑定(两种方式)吗?这可能会导致高 CPU。 还是很多动画?

最终,您可以使用 WPF 性能套件来监控导致这种高 CPU 负载的原因:http://msdn.microsoft.com/en-us/library/aa969767.aspx

【讨论】:

【参考方案2】:

Rody 的好帖子,我只是要添加一些东西,使用答案而不是评论,因为 cmets 有最大限制..

我还建议使用 Ants Profiler,它有 2 周的试用期 - 足以弄清楚发生了什么。此外,如果您发布一些代码,这里的人们可以快速指出一些事情。

例如,如果您拥有如 Rudy 指出的大量绑定和动画,以及过于复杂的控件和控件模板。质疑堆栈面板内、边框内的堆栈面板的不必要组合...使用 TextBlocks 而不是 Labels,或者是否需要 TextBoxes,如果它们是只读的,请使用 TextBlocks + Border。您的 ItemControl 的项目是否过于复杂?等等……

此外,Ants Profiler 可以显示您的“僵尸”对象。您是否正确处置,是否回收您的对象,或者每次都创建新的复杂结构(例如,当为您的数据选择一个新的日期范围以显示时)然后重新绑定到它们。如果您有数据网格单元格,是否每个单元格都需要昂贵的东西...弹出窗口和额外的边框。它在网格上。 名单可以继续。

长话短说 - WPF 是一头猪:所以您可能需要精简一些东西,或者/或者更有创造力,以减少开销来保持美观。

附:不要忘记发布一些代码...

【讨论】:

哇,蚂蚁性能分析器确实是一个很棒的提示!谢谢!

以上是关于WPF 的高 CPU 使用率的主要内容,如果未能解决你的问题,请参考以下文章

React-Native 中的高 CPU 使用率

java应用程序中的高CPU利用率-为啥?

SpriteKit 游戏中的高 CPU 使用率

Spotify 中 CSS 轮换的高 CPU 使用率

[Java] HashMap 导致的高 CPU 使用率

Angular CLI - ng serve - 来自节点进程的高 CPU 使用率