什么在解析,DataSet.Tables或Dictionary <string,Tables>方面更快

joh*_*hnc 2 .net datatable comparison dictionary

我正在为导入导出测试(算法读取和编写复杂数据结构到我们的数据库,而不仅仅是测试IO操作)创建一个模拟数据库,并且我正在尝试决定是否使用DataSet来存储模拟表(按表格)在faux-database或Dictionary()中的名称)

在按名称检索数据表方面,我是否期望从dataset.Tables ["TableName"]或字典<"TableName">(来自Dictionary()?获得更好的性能?

Mar*_*ell 7

实际上,由于执行字典逻辑(haches,buckets等)固有的复杂性,Dictionary<,>通常比线性搜索.在我的测试中,截止值(Dictionary<,>开始更快)通常约为150个元素.并且由于您通常拥有的表少于150,我会对性能的线性列表感到满意.

(这根本不意味着"不使用Dictionary<T>;它只是意味着性能可能不是这个特定用例的主要原因;唯一的密钥执行和foo ["bar"]模型可能是)

这部分是由于获得哈希的复杂性-与GetHashCode()用于string特别是相对昂贵的(虽然int.GetHashCode()是令人眼花缭乱的快速;-p).

实际上,在大多数小型数据中,您永远不会注意到两者之间的差异.如果您有大量数据,那么显然您需要相应地计划并编写代码.

a Dictionary<,>和类似a之类的其他差异List<>就是唯一性:a Dictionary<,>不会让你拥有重复的密钥(尽管Lookup<,>在.NET 3.5中会有).