我做了一些POC,发现当我搜索一大套400件物品时,它比搜索20件20件物品快6-7倍。虽然在这两种情况下都使用了散列,但循环成本如何呢?
答案 0 :(得分:0)
您希望它花费相同的时间还是20倍?有20组,平均需要10.5次查找(假设项目恰好存在于其中一项中),因此应该得到10.5的因子。这是合理的接近您报告的因子6-7。由于您没有给我们任何代码,我们无法指出您的基准测试失败的位置。但是,如果没有阅读关于how to benchmark的内容,那么没有人能够做到正确。
如果您想了解更多信息,请向我们提供更多详细信息。
PS:你几乎不应该像你当时可能使用的那样使用20套。Map<Item, Integer>
作为集合分区的表示要好得多,并且与Set<Item>
一样快(实际上,Set
是通过Map
实现的。