c# - 强类型数据集会提高性能吗?

标签 c# .net performance dataset strongly-typed-dataset

在我工作的地方,我们终于开始考虑使用强类型数据集来封装我们对 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;
}

如果属性真的只是在幕后进行转换,我可以看出根本不会有任何加速;首先,函数调用的开销可能会比以前花费更长的时间。

我们应该了解使用数据集的其他性能优势/劣势吗?

谢谢!

最佳答案

我不确定使用强类型数据集是否会有任何性能改进,但是您可以获得额外的类型安全性,例如,当您输入错误的字段名称时会出现编译器错误。

MSDN magazine中有一篇文章关于他们,引用其中的一行:

The speed in accessing a typed DataSet is comparable to the faster techniques in accessing an untyped DataSet (since a typed DataSet is just a layer over an untyped DataSet) and the readability of the typed DataSet is the best

此外,正如 Stuart B 指出的那样,Intellisense 本身就是值得的。

关于c# - 强类型数据集会提高性能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/528680/

相关文章:

c# - LINQ to NHibernate,如何做这个查询

c# - Rx 订阅 FromEvents 合并所有

c# - 如何在 GeckoFX 29 中处理下载

c# - .NET : StreamReader does not recognize ° characters

c++ - 如果繁重的计算函数位于循环的条件部分,运行时间是否会有所不同?

c# - 不为空的空对象

c# - 对对象删除或保存使用什么类型的方法?

c# - 在不指定 T 的情况下模拟 Moq 中的泛型方法

swift - 性能:Array.removeAll 与 `= []`

r - 我如何有效地二分法