2016-12-14 10 views
1

私はいくつかのPOCを行い、400アイテムの大きなセットを検索すると、それぞれ20アイテムの20セットを検索するよりも6〜7倍高速です。両方のケースでハッシュが使用されていますが、ループ処理だけではどのようにコストがかかりますか?さまざまな小さなHashSetと1つの大きなHashSetの検索の違いは何ですか?

+3

おそらく20セットを探している場合は、1つではなく20までの検索が行われます。ハッシュ検索は高速です。なぜなら、ハッシュはオブジェクトの検索場所を示しているからです。ルックアップルックアップは、あなたが何かを見つけるまであらゆる場所を見ているので、遅いです。 – khelwood

答えて

0

同じ時間か20倍かかると思いますか? 20セットでは、平均で10.5ルックアップが必要です(アイテムが正確にそれらの1つに存在すると仮定した場合)ので、10.5のファクタが必要です。これはあなたの報告された要因の6-7に近いほど妥当です。コードを渡さなかったので、ベンチマークが失敗する箇所を指摘することはできません。しかし、how to benchmarkについて何かを読まなければ、誰もそれを正しく得ることはできません。

さらに詳しく知りたい場合は、詳細をお知らせください。


PS:20セットを使用することはほとんどありません。 A Map<Item, Integer>は、セットパーティショニングの表現としてはるかに優れており、Set<Item>(実際にはSetMapで実装されています)と同じくらい速いです。

関連する問題