我正在为导入导出测试(算法读取和编写复杂数据结构到我们的数据库,而不仅仅是测试IO操作)创建一个模拟数据库,并且我正在尝试决定是否使用DataSet来存储模拟表(按表格)在faux-database或Dictionary()中的名称)
在按名称检索数据表方面,我是否期望从dataset.Tables ["TableName"]或字典<"TableName">(来自Dictionary()?获得更好的性能?
实际上,由于执行字典逻辑(haches,buckets等)固有的复杂性,Dictionary<,>
通常比线性搜索慢.在我的测试中,截止值(Dictionary<,>
开始更快)通常约为150个元素.并且由于您通常拥有的表少于150,我会对性能的线性列表感到满意.
(这根本不意味着"不使用Dictionary
;它只是意味着性能可能不是这个特定用例的主要原因;唯一的密钥执行和foo ["bar"]模型可能是)
这部分是由于获得哈希的复杂性-与GetHashCode()
用于string
特别是相对昂贵的(虽然int.GetHashCode()
是令人眼花缭乱的快速;-p).
实际上,在大多数小型数据中,您永远不会注意到两者之间的差异.如果您有大量数据,那么显然您需要相应地计划并编写代码.
a Dictionary<,>
和类似a之类的其他差异List<>
就是唯一性:a Dictionary<,>
不会让你拥有重复的密钥(尽管Lookup<,>
在.NET 3.5中会有).