3

Ruby ハッシュがコンスタント タイム アクセスを失う前に対応できるアイテムの数に一定のルールがないことは理解していますが、誰かがアドバイスを共有できることを願っています。

80 万個のキーを Ruby ハッシュに格納し、それらすべてにブール値 true を割り当てます。それでおしまい。

各検索には数秒かかるようです。

Ruby ハッシュは 800K キーで一定時間ルックアップを示すべきですか?

大きなハッシュでパフォーマンスの低下が予想される場合のしきい値または経験則はありますか? Ruby のエキスパートからのご連絡をお待ちしております。

ありがとう!

4

1 に答える 1

2

s.to_sym を使用して文字列をシンボルに変換するだけでなく、複数のルックアップのシーケンス中にハッシュ キーを作成または破棄しない場合は、一連のルックアップの前に GC.disable を呼び出し、後で GC.enable を呼び出すこともできます。これにより、ガベージ コレクションが一時的に無効になります。多数のオブジェクトを作成または削除しない単純なループ。

メモリ内の (Ruby) オブジェクトの数が数百万になると、Ruby のパフォーマンスが大幅に低下する可能性があります。パフォーマンスの低下の一部は、ガベージ コレクション ルーチンが在庫を取得するのにかかる時間です。

于 2013-03-11T10:47:42.187 に答える