我有一个C#/ .Net应用程序,似乎使用它的大部分CPU时间来更新DataGridView。我每1.5秒手动更新一次数据,只更新已更改的数据。这最终每1.5秒更新250次。我想将1.5秒缩短到更小的数字(可能是0.5秒)。我尽可能地进行了分析和优化,虽然性能还可以,但我希望它更快。
我的问题是,将视频卡从Nvidia FX1800升级到Nvidia FX3800会产生显着的加速吗?
答案 0 :(得分:1)
GDI +操作并不依赖于图形CPU,因为它只使用每个图形卡支持的基本加速操作(线条,矩形等)。
我猜这里的问题是你在更新期间没有“隐藏”控件。检查BeginUpdate / EndUpdate方法(如果可用)。如果没有,将visible设置为false,更新并将visible设置为true有时可以解决问题。
答案 1 :(得分:1)
答案 2 :(得分:1)
我的直觉说“不。”
CPU时间不是GPU时间。如果CPU正忙于更新视图,则可能需要将系统更改为更加CPU友好的视图。听起来它不是延迟加载并且获取所有数据和所有更新。你的价值范围有多大?如果你没有很多价值,这可能没问题。我怀疑你有大量的值,它将整个列表保存在内存中。由于一些原因,这很糟糕。它需要大量的内存,你需要注意所有的变化(不仅仅是那些影响你当前显示的变化),还有很多内容需要转移和更新。
我会寻找一种更友好的控件,只加载部分数据。
您拥有的显卡应该能够在很短的时间内渲染视图。尝试抓住应用程序并在屏幕上疯狂移动它。这将告诉您它的更新速度(是的,不完全准确,因为它可能被缓存)。
你的名单有多大?
雅各
答案 3 :(得分:0)
我使用DataGridView
在应用程序中显示1000个项目的列表,其中数据(以及我的意思是整个列表)每50ms刷新一次,几乎没有性能损失。所以我不相信你想要做的事情对于DataGridView
而言太过分了
正如Eric J.建议的那样,你应该对代码进行分析,我相信你会发现你的性能问题来自代码中的其他地方。