C#为DataRow[";haswatnots";]赋值=haswatnots的速度非常慢
C#给DataRow[“haswatnots”]=haswatnots赋值非常慢。hasWhatnots是一个布尔值 我已经分析了这一行,有560000次点击,执行时间是82秒。当然探查器对性能有一定的影响,但它的性能仍然非常慢 关于这个问题的任何提示。DataRow是绑定到绑定到DataGridView.Datasource的BindingSource的DataTable的一部分 (编辑:只看到您正在进行数据绑定) 首先要尝试的是禁用数据绑定;可能会将源设置为null,然后重新绑定C#为DataRow[";haswatnots";]赋值=haswatnots的速度非常慢,c#,.net,datatable,datarow,C#,.net,Datatable,Datarow,C#给DataRow[“haswatnots”]=haswatnots赋值非常慢。hasWhatnots是一个布尔值 我已经分析了这一行,有560000次点击,执行时间是82秒。当然探查器对性能有一定的影响,但它的性能仍然非常慢 关于这个问题的任何提示。DataRow是绑定到绑定到DataGridView.Datasource的BindingSource的DataTable的一部分 (编辑:只看到您正在进行数据绑定) 首先要尝试的是禁用数据绑定;可能会将源设置为null,然后重新绑定Bindin
BindingSource
为此提供了SuspendBinding()
、ResumeBinding()
和ResetBindings()
如果真正的问题只是查找,您可以捕捉
数据列
,然后使用:
// early code, once only...
DataColumn col = table.Columns["haswhatnots"];
// "real" code, perhaps in a loop
row[col] = hasWhatnots;
我似乎记得这是最快的路线(字符串重载从列表中找到DataColumn
)
或者-使用类
模型,而不是数据表
-你可以试试这个
bindingSource1.RaiseListChangedEvents = false;
// stuff the grid
bindingSource1.RaiseListChangedEvents = true;
看看有没有不同。很晚了,但还是有同样的问题
DataRow row
row.BeginEdit();
row["haswhatnots"] = hasWhatnots;
row.EndEdit();
在(我的规模)大型网格(60列,10k+行)上出现了极大的滞后,这将cpu时间缩短到比以前少1%