我做了一些POC,发现当我搜索一个400个项目的大集合时,它比搜索20个集合(每个集合20个项目)快6-7倍。虽然在这两种情况下都使用了散列,但是仅仅是循环成本怎么会这么高呢?
发布于 2016-12-15 05:59:37
你认为它会花费相同的时间还是20倍的时间?对于20个集合,您平均需要10.5次查找(假设项目恰好出现在其中一个集合中),因此应该会得到10.5的因子。这与你报告的6-7的系数很接近。因为您没有给我们代码,所以我们不能指出您的基准测试失败的地方。但是,如果不阅读一些关于how to benchmark的内容,就没有人能正确理解它。
如果您想了解更多,请向我们提供更多详细信息。
附言:你几乎不应该像现在这样使用20套。Map<Item, Integer>
作为集合划分的表示形式要好得多,并且与Set<Item>
一样快(实际上,Set
是通过Map
实现的)。
https://stackoverflow.com/questions/41141431
复制相似问题