わかりましたので、投稿を再構成して、少し理解しやすくしました(すべてのペーストビンについて申し訳ありませんが、スタックオーバーフローはコードのフォーマットで愚かでした)
以下に述べるように、途方もない量のデータを保存するつもりはないことに注意してください。私が言った量を使用する主な理由は、可能な限り多くの効率を絞り出すことです.
次のコードがあるとしましょう
DropItemQueue に追加されるメソッド (floodFill (深さ 0) で開始) 他のパラメーターは関係ありません)
これは同じクラスで、Utils で dropItem メソッドを呼び出します。
私の Utils.dropItem メソッドは次のとおりです
これは ServerTickHandler.addDropItemQueue メソッドとその変数ストレージです
これが DropItemQueue クラスです
このハッシュセットに 100000000 個の要素を追加するとしたら、約 2 秒かかることに気付きました
このイテレータは 1/20 秒ごとに呼び出されます。
反復ごとに 2 秒というのは大したことではないように思えますが、その量の要素を使用して、ハッシュ セットに格納されているすべての要素を削除するには、約 50 日かかります。
要素がハッシュセットに解析されるたびに、maxTicks は前に追加された要素よりも 1 多いため、基本的に 1 秒ごとにアイテムがドロップされますが、すべてを反復するのに 2 秒かかるため、アイテムをドロップするのに実際には 3 秒かかります。反復を完了し、すべての要素をフラッシュして完了するまでに約 150 日かかります。
私の質問は、最大要素数が少ない複数のハッシュセットを持つ方が速いでしょうか、たとえば 1000 要素です。
はい、これにより100000個のハッシュセットが得られますが、それぞれが小さいため、反復時間が遅くなります(すべて効率が非常にわずかに向上します)、またはハッシュセット以外に使用できるより良いものがありますか、ハッシュセットが最適です使用する?
より小さな繰り返しの複数の繰り返しを使用した場合、クロススレッドデータの冗長性のためにスレッドを使用できなかったことに注意してください