我的应用程序遇到性能问题。本质上,我单击一个按钮,列表中填充了数据绑定(bind)数据(由于数据量大,这是虚拟化的),然后单击另一个按钮,该按钮将向关联的 ListView 添加一行。我含糊其词是因为我认为有必要说明 UI 中实际发生的事情有多么少。
这是我知道的:
- 我在运行 Win 7 Pro 的功能强大的开发计算机上以及具有良好规范的 XP SP3 计算机上都没有发现该问题。我只在运行具有 4 GB RAM 和 Core i5 CPU(比 XP 台式机更强大)的 Win 7 企业版的特定品牌笔记本电脑 (Lenovo ThinkPad) 上看到它。
- 由于上述发现,我认为这不是代码问题。
- 我使用 Microsoft 的 PerfView 工具进行分析并注意到我认为是对 UIElement.Measure 的大量调用(从未被我们的代码直接调用),这是我没有看到的当我在其他机器上分析时。
- 笔记本电脑的分辨率为 1360x780,因此我认为可能是由于我可能正在执行某些数据绑定(bind),小分辨率导致 GPU 不必要地渲染控件(这可能解释了对 Measure() 的大量调用) ).我将笔记本电脑的显示屏扩展到我的 24 英寸显示器,但没有看到任何改进。
现在我假设问题出在 GPU 上。我已经更新了驱动程序,但没有任何改进。
- 尽管我认为这不是代码的问题,但有没有等同于“SuspendLayout()”的 WPF
- 有没有办法分析 GPU 性能以查看它是否在某些过程中受到重创
- (远景)有没有人遇到过类似的似乎是计算机特有的性能问题以及关于如何追踪这些问题的建议?
抱歉,如果这是一个模糊的问题。我试着让它符合 SO 的使用要求。如果您需要更多信息,请告诉我。
作为附录:该程序使用 WPF、C# 4.0,问题似乎与 Telerik 控件有关(尽管我不认为它们是可疑的,因为我们在其他地方使用它们没有问题)。
最佳答案
原来这是由一个已知的 Microsoft 问题引起的。我会试着解释,但我不会。主要是我做不到。
Article talking about fix (参见 Viðar 于 2010 年 8 月 3 日发布的帖子):
Microsoft 修补程序站点:http://support.microsoft.com/kb/2484841/en-us
修复:http://archive.msdn.microsoft.com/KB2484841/Release/ProjectReleases.aspx?ReleaseId=5583
关于wpf - "Measure"的性能问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11696008/