【发布时间】:2019-04-26 18:40:53
【问题描述】:
我知道,没有一百万的东西会是高性能的。但我现在需要这些知识。
我有一个字典和一个字符串[]。字典中的布尔值只是为了填充空间。让我们把它想象成一个库存系统,只是为了让事情变得更容易。
在这个库存中,我想检查我是否已经拿到了一件物品。所以我要做的是:
if (dic.ContainsKey(item_id)) // That could be a TryGetValue() as well.
{
// Do some logic.
}
但是只有一个数组会更好吗?
if (array.FirstOrDefault(a => a = item_id))
{
// Do magic.
}
我的意思是,在特定情况下哪个会表现更好?
我知道,这是一个愚蠢的问题,但是当您可以进行超过一百万(或超过九千,对于 DBZ 粉丝 xD)的检查时,事情会变得非常繁重,尤其是对于移动设备、VR 和其他类似的性能。
另外,我只是希望我的用户对我的库存有最好的体验(也就是没有延迟),所以我经常考虑这样的事情。
【问题讨论】:
-
值得注意的是,如果您只想要字典中键的查找行为而不关心值,那么
Hashset<T>更合适。 -
使用数组获取数据的平均时间为 N/2。对于使用二进制哈希的字典,获取数据的平均时间是 Log2(N)。
标签: c# arrays dictionary for-loop lookup