2016-12-14 99 views
1

我做了一些POC,发现当我搜索一大组400件物品时,它比搜索20件20件物品的速度快6-7倍。尽管在这两种情况下都使用散列法,但循环成本如何呢?什么是各种小HashSet和1个大HashSet之间的搜索区别?

+3

据推测,如果你正在寻找的20套,你正在做的最多20点的查找,而不是一个。哈希查找速度很快,因为哈希表告诉您在哪里查找对象。循环查找速度很慢,因为您正在各个地方查找,直到找到该物品。 – khelwood

回答

0

您是否期望它采取相同的时间或20倍的时间?有20套,你需要平均10.5查找(假设该项目恰好在其中一个),所以应该导致10.5的因素。这接近您报告的6-7倍。由于您不给我们任何代码,我们无法指出您的基准测试失败的位置。但没有阅读how to benchmark的东西,没有人知道它是正确的。

如果您想了解更多信息,请提供更多详情。 PS:你几乎不应该使用20套你可能使用的方式。然后,你应该很少使用20组。一个Map<Item, Integer>是为一组分区的表示要好得多,并以最快的速度为Set<Item>(实际上,一个Set通过Map实现)。

相关问题