From: Tanaka Akira Date: 2007-09-28T18:28:46+09:00 Subject: [ruby-dev:31891] Re: packed st_table In article <87ejh9qrcv.fsf@fsij.org>, Tanaka Akira writes: > より現実的な例として REXML を... と思ったのですが、REXML は > 今は character encodings differ により動かないようなので、測 > 定できませんでした。うぅむ。 最近、REXML が動くようになっているので、試してみました。 (というか、試してもしょうがないことがわかったというか) RAA の all.html をとってきて tidy -asxml で XML で変換して 500kbytes くらいになったのを r13546 つまり T_OBJECT のパッチ があたった少し後くらいの Ruby で REXML を使ってパーズしてみ ました。 (packed st_table とかのパッチはぜんぜんあててません) massif で得られたグラフが http://cvs.m17n.org/~akr/diary/2007-09/r13546/massif.rexml-raa.png で、 http://cvs.m17n.org/~akr/diary/2007-09/ に使用したスクリプトなどが置いてあります。 グラフを見ると、文字列が消費メモリの大半を占めています。 なので、ハッシュをいじってもぜんぜん効きそうにありません。 REXML をどうにかしたければ、文字列をどうにかする必要があるで しょう。 文字列の消費メモリが激しく振動していることからみて、一時的な 文字列を大量に生成しては GC で回収しているのではないかという 気がします。もしこの推測が正しければ、一時的な文字列オブジェ クトをなるべく生成しないようにするというのが効きそうです。 -- [田中 哲][たなか あきら][Tanaka Akira]