gpt4 book ai didi

c# - List vs HashSet - 动态集合选择是否有效?

转载 作者:行者123 更新时间:2023-11-30 20:53:37 24 4
gpt4 key购买 nike

var usedIds = list.Count > 20 ? new HashSet<int>() as ICollection<int> : new List<int>();

假设 List 在 20 个或更少的项目时性能更高,而 HashSet 在项目数量更多时性能更高(来自 this 帖子),根据可预测的项目数量动态使用不同的集合类型是否是一种有效的方法?

每种集合类型的所有操作都是相同的。

PS:我也找到了HybridCollection似乎自动执行相同操作的类,但我从未使用过它,所以我也没有关于其性能的信息。

编辑:我的收藏主要用作具有许多插入和获取的缓冲区。

最佳答案

理论上,它可能是,这取决于您对集合执行的操作数量和类型。在实践中,这种微优化可以证明增加的复杂性是合理的,这种情况非常罕见。

还要考虑您正在处理的数据类型。如果您使用 int 作为问题第一行所建议的集合项,那么阈值将远小于 20,其中 List 不再许多操作比 HashSet 更快。​​

无论如何,如果您要这样做,我会创建一个新的集合类来处理它,类似于 HybridDictionary 的内容,并使用 IDictionary 等通用接口(interface)将其公开给您的用户代码。

并确保对其进行概要分析,以确保您的用例确实从中受益。

甚至可能有比这两个集合中的任何一个更好的选择,具体取决于您在做什么。也就是说,如果你正在做很多“之前或之后”的插入和遍历,那么 LinkedList可能更适合您。

关于c# - List<T> vs HashSet<T> - 动态集合选择是否有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19846062/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com