最近我不得不对存储在 DataSet 中的数据进行一些非常繁重的处理。它足够重,以至于我最终使用了一个工具来帮助识别我的代码中的一些瓶颈。当我分析瓶颈时,我注意到虽然 DataSet 查找不是特别慢(它们不是瓶颈),但它比我预期的要慢。我一直假设 DataSets 使用某种 HashTable 样式的实现,这将使查找复杂度为 O(1)(或者至少我认为 HashTable 就是这样)。我的查找速度似乎比这慢得多。
我想知道是否有人对 .NET 的 DataSet 类的实现有所了解,是否愿意分享他们所知道的。
如果我这样做:
DataTable dt = new DataTable();
if(dt.Columns.Contains("SomeColumn"))
{
object o = dt.Rows[0]["SomeColumn"];
}
Contains(...)
方法以及检索要存储在 Object o
中的值的查找时间有多快?我本以为它像 HashTable 一样非常快(假设我对 HashTable 的理解是正确的)但它看起来不像......
我是凭内存写的代码,所以有些东西可能“语法不正确”。
最佳答案
其实在引用列的时候最好使用整型,这样在性能上可以提升很多。为了使事情易于管理,您可以声明常量整数。因此,除了你所做的,你还可以做
const int SomeTable_SomeColumn = 0;
DataTable dt = new DataTable();
if(dt.Columns.Contains(SomeTable_SomeColumn))
{
object o = dt.Rows[0][SomeTable_SomeColumn];
}
关于c# - DataSet 行/列查找的速度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/144902/