字典、列表或数组

本文关键字:数组 列表 字典 | 更新日期: 2023-09-27 18:16:07

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

字典、列表或数组

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

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

因此,在您的情况下,我会选择字典,除非大数组的稍微更好的性能确实与您的情况有关。

Dictionary<TKey, TValue>内部使用哈希表,所以我认为它将是最快的。

字典与列表查找时间

另外,关于不同集合的更详细的解释,请查看这个问题

也可以使用哈希表。字典内部使用它。但是dictionary有一个优点,那就是它是一个通用类型,它给了你类型安全。

这里是不同的线程字典Vs哈希表我希望它能帮助你做出决定。

Praveen