Phi*_*ler 9 wpf optimization performance rendering
所以,我正在构建一个WPF应用程序,并在今天进行了测试部署,并发现它的表现非常糟糕.我很惊讶,因为我们在视觉效果或动画方面做得并不多.
我部署在两台机器上:运行应用程序所需的最快和最慢(最慢的PC具有Intel Celeron 1.80GHz和2GB RAM).该应用程序在较快的机器上运行得很好,但在较慢的机器上却不稳定.当我说"波涛汹涌"时,我的意思是光标跳过,甚至只是将它传递到有焦点的应用程序的任何打开的窗口.
我打开了"任务管理器性能"窗口,可以看到只要应用程序有焦点并且光标在其上移动,CPU使用率就会跳跃.如果我将焦点放在另一个(例如Excel)上,CPU使用率会在一秒后恢复.这发生在两台机器上,但是在较慢的机器上只有明显的波动.我只有非常有限的时间来修补部署机器,所以没有做很多详细的测试.
该应用程序在我的开发机器上运行良好,但我也看到CPU在那里飙升10%,只是将光标放在窗口上.
我从MS下载了WPF性能工具并且一直在修补它(在我的开发机器上).文档说明了Perforator工具中的"帧率"指标:
对于没有动画的应用程序,此值应接近0.
应用程序没有做任何繁重的动画,但当光标在任何窗口上时,帧速率保持在50附近.我测试过的屏幕在网格中有列标题"突出显示",滚动时会改变颜色和外观的按钮.即使在窗口的空白区域上移动鼠标也会导致相同的帧速率和CPU使用率(似乎与这些次要动画无关).
(另外,除了两个默认工具 - Perforator和Visual Profiler - 安装到WPF性能工具中之外,我无法弄清楚如何获得任何东西.这可能是一个单独的问题).
我也有Redgate的分析工具,但我不确定这是否可以解释渲染性能.
因此,我意识到在没有细节或示例代码(我无法发布)的情况下进行故障排除并不容易.我的问题是:
您是否BitmapEffect对 UI 元素应用了任何 -s ?它们不由 GPU 处理,因此 CPU 负责渲染它们。如果使用不当(例如,将 OuterGlowBitmapEffect 应用于大型复杂元素),它们可能会对性能产生可怕的影响。
此外,您可能仍然想尝试使用性能分析器来分析您的应用程序。只是想看看是否是您的代码导致了此问题。