DataGridView性能 - 它取决于视频卡吗?

时间:2009-08-11 17:36:22

标签: .net windows winforms hardware

我有一个C#/ .Net应用程序,似乎使用它的大部分CPU时间来更新DataGridView。我每1.5秒手动更新一次数据,只更新已更改的数据。这最终每1.5秒更新250次。我想将1.5秒缩短到更小的数字(可能是0.5秒)。我尽可能地进行了分析和优化,虽然性能还可以,但我希望它更快。

我的问题是,将视频卡从Nvidia FX1800升级到Nv​​idia FX3800会产生显着的加速吗?

4 个答案:

答案 0 :(得分:1)

GDI +操作并不依赖于图形CPU,因为它只使用每个图形卡支持的基本加速操作(线条,矩形等)。

我猜这里的问题是你在更新期间没有“隐藏”控件。检查BeginUpdate / EndUpdate方法(如果可用)。如果没有,将visible设置为false,更新并将visible设置为true有时可以解决问题。

答案 1 :(得分:1)

您的时间几乎肯定不会花在绘制屏幕上,而是在更新数据的内部表示时,所以不会有任何帮助。

编辑:

要了解花费的时间,请查看剖析器。我个人更喜欢Red Gate

中的那个

答案 2 :(得分:1)

我的直觉说“不。”

CPU时间不是GPU时间。如果CPU正忙于更新视图,则可能需要将系统更改为更加CPU友好的视图。听起来它不是延迟加载并且获取所有数据和所有更新。你的价值范围有多大?如果你没有很多价值,这可能没问题。我怀疑你有大量的值,它将整个列表保存在内存中。由于一些原因,这很糟糕。它需要大量的内存,你需要注意所有的变化(不仅仅是那些影响你当前显示的变化),还有很多内容需要转移和更新。

我会寻找一种更友好的控件,只加载部分数据。

您拥有的显卡应该能够在很短的时间内渲染视图。尝试抓住应用程序并在屏幕上疯狂移动它。这将告诉您它的更新速度(是的,不完全准确,因为它可能被缓存)。

你的名单有多大?

雅各

答案 3 :(得分:0)

我使用DataGridView在应用程序中显示1000个项目的列表,其中数据(以及我的意思是整个列表)每50ms刷新一次,几乎没有性能损失。所以我不相信你想要做的事情对于DataGridView而言太过分了 正如Eric J.建议的那样,你应该对代码进行分析,我相信你会发现你的性能问题来自代码中的其他地方。