[英]Is Dictionary.ContainsKey() any better than FirstOrDefault()?
我知道,没有任何一件事能表现出色。 但是我现在需要这方面的知识。
我有一个词典和一个字符串[]。 字典中的布尔值仅用于填充空格。 让我们想象一下,作为一个库存系统只是为了使事情变得简单。
在此清单中,我想检查是否已经获得一件物品。 所以我要做的是:
if (dic.ContainsKey(item_id)) // That could be a TryGetValue() as well.
{
// Do some logic.
}
但是拥有一个数组会更好吗?
if (array.FirstOrDefault(a => a = item_id))
{
// Do magic.
}
我的意思是,在特定情况下哪种效果更好?
我知道,这是一个愚蠢的问题,但是当您可以进行超过一百万(对于xD的DBZ粉丝来说,可以超过九千)检查时,事情会变得很繁重,尤其是对于移动设备,VR和性能类似的其他设备。
另外,我只希望我的用户对我的广告资源有最好的体验(又称无滞后),所以我经常考虑这样的事情。
这里有两个权衡的时空。
与数组相比,字典是一种相对较重的结构。
如果基本上不依赖于条目O(1)的数量,则在Dictionary(或HashSet)中的查找时间,而对于数组,则线性增加O(N)。
因此,在一定数量的项目中,字典(或HashSet)开始变得相当快。 一百万肯定高于这个门槛。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.