我在哪里工作我们终于来到使用强类型数据集来封装我们的一些查询到sqlserver的想法。我一直在兜售的想法之一是强类型列的强度,主要是为了不需要投射任何数据。我认为强类型数据集可以在可能存在数千行的情况下提高性能,我错了吗?强类型数据集可以提高性能吗?
老办法:
using(DataTable dt = sql.ExecuteSomeQuery())
{
foreach (DataRow dr in dt.Rows)
{
var something = (string)dr["something"];
var somethingelse = (int)dr["somethingelse"];
}
}
新的方式:
MyDataAdapter.Fill(MyDataset);
foreach (DataRow dr in MyDataset.MyDT.Rows)
{
var something = dr.Something;
var somethingelse = dr.SomethingElse;
}
如果性能真的只是在做幕后的铸造,我可以看到不会有任何加速在所有;也许这会花费更长的时间,然后才会首先调用函数调用的开销。
使用DataSets我们应该知道的其他性能优势/弱点?
谢谢!
我期望一个非常小的改进,因为在运行时没有对列名进行查找:编译器可以提前完成这项工作。但我真的怀疑这种差异是可以衡量的 – 2009-02-09 15:49:17
您能否扩展访问一个无类型数据集的“快速技术”? – 2009-02-09 15:55:25
尼古拉斯在链接的文章中向下滚动到“Casting Calls”部分,这里都有解释。我在下面的答案中提到了 – 2009-02-09 16:03:40