最近,我不得不对存储在 DataSet 中的数据进行一些非常繁重的处理。它足够重,以至于我最终使用了一个工具来帮助识别我的代码中的一些瓶颈。当我分析瓶颈时,我注意到虽然 DataSet 查找并不是很慢(它们不是瓶颈),但它比我预期的要慢。我一直认为 DataSets 使用了某种 HashTable 风格的实现,这将使查找 O(1)(或者至少我认为 HashTables 是这样)。我的查找速度似乎比这慢得多。
我想知道是否有人知道任何关于 .NET 的 DataSet 类的实现的人愿意分享他们所知道的。
如果我做这样的事情:
DataTable dt = new DataTable();
if(dt.Columns.Contains("SomeColumn"))
{
object o = dt.Rows[0]["SomeColumn"];
}
该方法的查找时间Contains(...)
以及检索要存储的值有多快Object o
?我会认为它像 HashTable 一样快(假设我对 HashTables 的理解是正确的),但它看起来不像......
我从内存中编写了该代码,因此有些事情可能不是“语法正确”。