java - 各种小HashSet和1个大HashSet的搜索差异是什么?

标签 java performance collections hashmap hashset

我做了一些 POC,发现当我在 400 个项目的大集合中搜索时,比在 20 个集合(每个集合 20 个项目)中搜索快 6-7 倍。虽然在这两种情况下都使用了散列,但仅仅循环的成本怎么会如此之高?

最佳答案

您预计需要同样的时间还是长 20 倍的时间?对于 20 个集合,您平均需要 10.5 次查找(假设该项目恰好出现在其中一个集合中),因此结果应为 10.5。这与您报告的 6-7 因子相当接近。由于您没有向我们提供代码,因此我们无法指出您的基准测试失败的地方。但没有阅读有关 how to benchmark 的内容,没有人做对。

如果您想了解更多信息,请向我们提供更多详细信息。

<小时/>

PS:您几乎不应该像当时那样使用 20 套。一个Map<Item, Integer>作为集合分区的表示要好得多,并且与 Set<Item> 一样快(实际上, Set 是通过 Map 实现的)。

关于java - 各种小HashSet和1个大HashSet的搜索差异是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41141431/

相关文章:

java - 为什么要在框架中添加额外的空间?

python - Numpy 二维数组 : change all values to the right of NaNs

C++ 对象的集合

java - 如何使用 Guava 创建现有集合的多个 Multimap 实时 View

java - 在并发类的 run() 方法中放置什么?

java - 从 angularJs 调用 java Controller

java - 为什么遍历 LinkedList 很慢?

performance - 为什么 Lua 中的本地化函数更快?

c# - 在类里面收藏

java - GWT 披露面板()