为我的妻子http://cchearts.codeplex.com/制作屏幕保护程序,虽然我已经能够提高低端机器上的 FPS,但 CPU 使用率似乎仍然很高。
这是我从几个 5 分钟的采样周期中得出的一些数字:
在 Core 2 Duo T7500 @ 2.2GHz、3GB 内存、NVIDIA Quadro NVS 140M (128MB)、Vista [我的开发笔记本电脑] 上约 60FPS 35% 平均 CPU
在 Pentium D @ 3.4GHz、1.5GB 内存、标准 VGA 图形适配器(未知)、2003 服务器 [一个蹩脚的桌面] 上 ~40FPS 50% 平均 CPU
我可以理解在糟糕的桌面上较低的帧速率和较高的 CPU 使用率,但它似乎仍然很高,我的开发笔记本电脑上的 35% 似乎也很高。
我真的很想分析应用程序以获取更多详细信息,但我也有问题,所以我想知道我是否做错了什么(以前从未分析过 WPF)。
WPF 性能套件:
进程启动错误
无法附加到进程:CCHearts.exe 你想杀死它吗?
当我在尝试启动后单击取消时会出现此错误消息。如果我不点击取消,它就会闲置在那里,我想等待附加。
性能资源管理器:
无法启动 C:\Projects2\CC.Hearts\CC.Hearts\bin\Debug (USEVISUAL)\CCHearts.exe。上次尝试分析应用程序未成功完成。请重新启动应用程序。
性能的输出窗口:
剖析开始了。分析进程 ID 5360 (CCHearts)。进程 ID 5360 已退出。数据写入 C:\Projects2\CC.Hearts\CCHearts100608.vsp。剖析完成。PRF0025:未收集数据。剖析完成。
所以我一直想提高性能,但没有具体的方法来确定瓶颈在哪里。在这一点上已经相对成功地投掷飞镖,但我现在已经超越了:)
概括:
到目前为止进步很大...
性能资源管理器
问题:不工作,错误信息模糊。
解决方案:使用命令行版本获取一条真正的错误消息,将我指向该线程,指出这是一个 Symantec dll 阻止了我。设置以下注册表项可解决问题:
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SysPlant]
“开始”=dword:00000004
WPF 性能套件
问题:不工作,没有错误信息。
解决方案:使用Windows SDK 7.1中为 .NET 4 设计的 WPF 性能套件,而不是 Windows SDK 7 中的先前版本(我觉得很傻 :-P)
WPF 动画
问题:与 FPS/感知工作负载相比,CPU 使用率较高。
解决方案:这里和那里有很多好的调整。但是正如 Jeremiah Morrill 所指出的,巨大的改进是缓存组合。检查变更集。