字典,列表或数组?

我正在写一个性能至关重要的服务,我不确定什么是最快的。 我有几个对象(50-200),每个对象都有一个ID(整数,例如84397或23845)。 拥有一个Dictionary,一个KeyValue对列表或一个列表,其中索引设置为ID,其余的具有空值或具有相同想法的数组会更快吗?

这取决于您要执行的操作。 假设您要查找具有给定ID的对象

  • 巨大的arrays方法是最快的:访问myArray[84397]是一个恒定时间操作O(1) 。 当然,这种方法需要最多的记忆。
  • 字典几乎同样快,但需要更少的内存,因为它在内部使用哈希表 。
  • 列表方法是最慢的,因为您可能必须遍历整个列表以找到您的条目,这会产生O(n)复杂性。

因此,在您的情况下,我会选择字典,除非在您的情况下,巨大arrays的性能略有提高。

Dictionary在内部使用哈希表,所以我认为它是最快的。

字典与列表查找时间

此外,有关不同集合的更详细说明,请查看此问题 。

您也可以使用Hashtables。 无论如何,字典内部使用它。 但字典有一个优点,它是GENERIC类型,它为您提供类型安全。

这里是不同的线程字典Vs HashTable我希望它可以帮助您决定。

普利文