1
我做了一些POC,發現當我搜索一大組400件物品時,它比搜索20件20件物品的速度快6-7倍。儘管在這兩種情況下都使用散列法,但循環成本如何呢?什麼是各種小HashSet和1個大HashSet之間的搜索區別?
我做了一些POC,發現當我搜索一大組400件物品時,它比搜索20件20件物品的速度快6-7倍。儘管在這兩種情況下都使用散列法,但循環成本如何呢?什麼是各種小HashSet和1個大HashSet之間的搜索區別?
您是否期望它採取相同的時間或20倍的時間?有20套,你需要平均10.5查找(假設該項目恰好在其中一個),所以應該導致10.5的因素。這接近您報告的6-7倍。由於您不給我們任何代碼,我們無法指出您的基準測試失敗的位置。但沒有閱讀how to benchmark的東西,沒有人知道它是正確的。
如果您想了解更多信息,請提供更多詳情。 PS:你幾乎不應該使用20套你可能使用的方式。然後,你應該很少使用20組。一個Map<Item, Integer>
是爲一組分區的表示要好得多,並以最快的速度爲Set<Item>
(實際上,一個Set
通過Map
實現)。
據推測,如果你正在尋找的20套,你正在做的最多20點的查找,而不是一個。哈希查找速度很快,因爲哈希表告訴您在哪裏查找對象。循環查找速度很慢,因爲您正在各個地方查找,直到找到該物品。 – khelwood