C#为DataRow [“haswhatnots”]赋值= hasWhatnots非常慢。 hasWhatnots是一个布尔值。
我已经分析了这一行,并且560000次点击的执行时间为82秒。当然,分析器对性能有一些影响,但这种性能仍然非常慢!
有关此问题的任何提示。 DataRow是DataTable的一部分,DataTable绑定到绑定到DataGridView.Datasource的BindingSource。
答案 0 :(得分:2)
(编辑:只看到你是数据绑定)
首先要尝试的是禁用数据绑定;也许将源设置为null并在之后重新绑定。 BindingSource
有SuspendBinding()
,ResumeBinding()
和ResetBindings()
。
如果真正的问题只是查找,您可以快速查看DataColumn
,然后使用:
// early code, once only...
DataColumn col = table.Columns["haswhatnots"];
// "real" code, perhaps in a loop
row[col] = hasWhatnots;
我似乎记得这是最快的路线(字符串重载从列表中找到DataColumn
)。
或者 - 使用class
模型代替DataTable
;-p
答案 1 :(得分:0)
你可以试试这个
bindingSource1.RaiseListChangedEvents = false;
// stuff the grid
bindingSource1.RaiseListChangedEvents = true;
看看它是否有所作为。
答案 2 :(得分:0)
很晚,但仍有同样的问题
DataRow row
row.BeginEdit();
row["haswhatnots"] = hasWhatnots;
row.EndEdit();
在(在我的规模上)大网格(60列,10k +行)中出现了极端滞后,这使得CPU时间缩短到不到1%。