大きな配列 (1000 万以上のオブジェクト) を 1 つのオブジェクトに結合し (簡単にするために、ここでは文字列と仮定します)、配列内の各要素を何らかの処理 (関数によって抽象化) で実行しますdo_stuff
。これを行うには、次の 2 つの自然な方法があります。
memo = ""
big_array.each do |e|
memo << do_stuff(e)
end
memo
と
big_array.reduce("") do |memo, e|
memo + do_stuff(e)
end
reduce/inject 構文の方が美的に魅力的ですが、問題はどちらがよりメモリ効率がよいかです。それぞれが reduce よりもわずかに時間効率が良いことは既にわかっていますが、メモリはどうでしょうか?
また、Ruby でのメモリ使用量をプロファイルする方法についても明確ではありません。特に、コード ブロックのみについてです。