大きなデータセットを処理するWeakRefを使用することのオーバーヘッドは何ですか?
私が実行したいタスクは次のようなものです。
huge = get_array_of_weak_refs # 100000000 entries or more :)
result = huge.length * huge.inject(0) { |accum, it| accum += it.total } # much more complicated, just a sample
get_array_of_weak_refs
それは時間がかからず、O(1)
複雑であると仮定します。そのため、唯一の懸念はhuge
配列のメモリサイズです。
の計算にかかる時間についても、現時点では気にしませんresult
。
が通常の配列である場合huge
、もちろんメモリに収まらない可能性があります。
しかし、WeakRef がその配列の要素として使用される場合、それは役に立ちますか? そのため、要素を反復処理した後、x
ガベージ コレクションを実行してメモリを解放できます。
このシナリオのオーバーヘッドはどれくらいですか? 代替案はありますか?