c# - DataSet 行/列查找的速度?

标签 c# .net optimization datatable

最近我不得不对存储在 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/

相关文章:

c# - Outlook 插件 - 搜索全局地址簿

c++ - 将数字从范围转换为另一个范围的更快方法

optimization - 循环函数花费的时间太长

c# - 滚动时图表宽度移动

c# - 在 C#/.NET 中将参数标记为 NOT nullable?

c# - 在Youtube Downloader .dll中返回值的最佳方法是什么?

c# - Unity3D获取动画 Controller 当前动画时间

c# - 使用 Font 创建条形码 - 这是否正确?我错过了什么吗?

c# - System.Text.Json 从 API 调用反序列化嵌套对象 - 数据包装在父 JSON 属性中

python - 迭代 3D numpy 数组列并将值更改为邻居(如果低于数字)