[ruby-dev:31762] Re: optimize range space

From: Yukihiro Matsumoto <matz@...>
Date: 2007-09-08 14:14:11 UTC
List: ruby-dev #31762
まつもと ゆきひろです

In message "Re: [ruby-dev:31760] Re: optimize range space"
    on Sat, 8 Sep 2007 11:43:52 +0900, Tanaka Akira <akr@fsij.org> writes:

|In article <877in961dy.fsf@fsij.org>,
|  Tanaka Akira <akr@fsij.org> writes:
|
|> Range のメモリ消費を節約するのはどうでしょうか。
|
|どのくらい節約できるのか測ってみました。
|
|節約する前は、以下のように、1000000個の range を生成すると
|106Mbytes ほど必要です。
|
|% time ./ruby -e 'a = []; 1000000.times {|i| a << (i..i) }
|print File.read("/proc/#{$$}/status").gsub(/^[^V].*\n/, "")'
|VmPeak:   105604 kB
|VmSize:   105604 kB
|VmLck:         0 kB
|VmHWM:    102596 kB
|VmRSS:    102596 kB
|VmData:   102772 kB
|VmStk:        84 kB
|VmExe:      1176 kB
|VmLib:      1492 kB
|VmPTE:       116 kB
|./ruby -e   7.61s user 0.20s system 98% cpu 7.952 total
|
|節約すると、以下のように、 35Mbytes ほどで済みます。
|
|% time ./ruby -e 'a = []; 1000000.times {|i| a << (i..i) }
|print File.read("/proc/#{$$}/status").gsub(/^[^V].*\n/, "")'
|VmPeak:    35416 kB
|VmSize:    35416 kB
|VmLck:         0 kB
|VmHWM:     32424 kB
|VmRSS:     32424 kB
|VmData:    32588 kB
|VmStk:        84 kB
|VmExe:      1176 kB
|VmLib:      1492 kB
|VmPTE:        48 kB
|./ruby -e   3.18s user 0.06s system 97% cpu 3.332 total
|
|つまり、使用メモリは半分以下になり、割合としては約 6割削減で
|きています。
|
|さらに、かかった時間も、8秒から 3.3秒くらいと減り、倍以上に
|高速化しています。
|
|こうしてみると、いまの Range がいかに無駄なことをしているか
|というのがわかるのですが、いかがでしょうか。

数字があると説得力が増しますね。コミットしてください。

In This Thread

Prev Next