C#为DataRow赋值[haswhatnots“] = hasWhatnots非常慢。 hasWhatnots是一个布尔值。C#为DataRow赋值[“haswhatnots”] = hasWhatnots非常慢
我已经描述了这一行,并且560000个点击的执行时间是82秒。当然,性能分析器对性能有一定的影响,但其性能仍然非常缓慢!
有关此问题的任何提示。 DataRow是绑定到绑定到DataGridView.Datasource的BindingSource的DataTable的一部分。
C#为DataRow赋值[haswhatnots“] = hasWhatnots非常慢。 hasWhatnots是一个布尔值。C#为DataRow赋值[“haswhatnots”] = hasWhatnots非常慢
我已经描述了这一行,并且560000个点击的执行时间是82秒。当然,性能分析器对性能有一定的影响,但其性能仍然非常缓慢!
有关此问题的任何提示。 DataRow是绑定到绑定到DataGridView.Datasource的BindingSource的DataTable的一部分。
(编辑:只是看到你是数据绑定) 首先要尝试的是禁用数据绑定;也许将源设置为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
)。
或者 - 而不是使用DataTable
;-p
一个class
模式你可以试试这个
bindingSource1.RaiseListChangedEvents = false;
// stuff the grid
bindingSource1.RaiseListChangedEvents = true;
,看看它是否有差别。
很晚,但还是有同样的问题
DataRow row
row.BeginEdit();
row["haswhatnots"] = hasWhatnots;
row.EndEdit();
有极端滞后,存在的上(在我的规模)大电网(60周的cols,10K +行),并且该板缺的CPU时间少然后是以前的百分之一。