From: _ wanabe Date: 2009-11-04T21:01:41+09:00 Subject: [ruby-dev:39636] [Feature #2328] malloc_limit の肥大化を防ぎたい チケット #2328 が更新されました。 (by _ wanabe) ファイル test.rb 追加 ファイル log.txt 追加 > 私は思いつきません。ベンチマーク(こんなケースでこんなに改善 > とか、こんなケースでは悪くならないとか)があると採用しやすい > と思います。 ありがとうございます。改善される例とその実行結果を添付しました。 悪くならないケースはそれらしいものが思いつきませんでした。すみません。 malloc/realloc の後に、1MB の文字列を 2000 個生成しています。 リネームの都合上 miniruby ですが、恐らく ruby でもあまり変わらないと思います。 -v は、いずれも ruby 1.9.2dev (2009-11-02 trunk 25630) [i386-mingw32] です。 まとめると、以下のような結果になりました。 メモリの潤沢な環境では、数値をいじらないと差が出ないかもしれません。 通常の miniruby, 大量 realloc 後: 277 秒(GC: 12 回) パッチ 1 適用時, 大量 realloc 後: 10 秒(GC: 286 回) パッチ 2 適用時, 大量 realloc 後: 285 秒(GC: 13 回) 両パッチ 適用時, 大量 realloc 後: 10 秒(GC: 286 回) 通常の miniruby, 大量 malloc 後: 141 秒(GC: 30 回) パッチ 1 適用時, 大量 malloc 後: 155 秒(GC: 30 回) パッチ 2 適用時, 大量 malloc 後: 27 秒(GC: 66 回) 両パッチ 適用時, 大量 malloc 後: 29 秒(GC: 66 回) なお手元では、両パッチ適用後 make test-all が 3722 秒 から2435 秒になりました。 (ブロックしてしまうので test_io.rb の test_dup_many はスキップしていますが) ---------------------------------------- http://redmine.ruby-lang.org/issues/show/2328 ---------------------------------------- http://redmine.ruby-lang.org