「ヒープ細分化、プロセスサイズ削減パッチを作った」のテスト

jemallocの勉強は今日はお休みします。というか、ある程度読み進めないとどっから書いたらいいか分からなくなることに気づきました。gamellaさんに紹介してもらったのに申し訳ありません。私はRuby開発者なんていう立場じゃないのですが、そう呼ばれてかなり嬉しかったです。なにより紹介してくださってありがとうございます。出来る限りがんばります。

今日は、autorNariさんの「ヒープ細分化、プロセスサイズ削減パッチを作った」(http://d.hatena.ne.jp/authorNari/20080328/1206675485)の効果を見てみようと思います。

まな板に挙げるのはこのblogで時々出ているminilight(http://www.hxa7241.org/minilight/minilight.html)です。すみません、私もRailsは使ったことは無いので、Railsは試せません。minilightは大域光源レンダラなんですが、いろいろな言語版があります。そのなかでRuby版が一番遅いので、なんとかブービーにさせるのが私の夢です。

これで、付属のCornell Boxをレンダリングした結果です。
ちょっと今日は時間が無いので、表にはまとめませんが、パッチを当てるとgcの掛かる時間が妙に時間が掛かっているのが気になります。多分、集計方法の問題じゃないかなとは思います。

元の版

gc call        = 18776
gc all time    = 5433.99951457376
gc ave time    = 0.289411989485181
gc min time    = 0.0
gc max time    = 3.80001068115234

mark call      = 18781
mark all time  = 10963.1061491469
mark ave time  = 0.583733887926463
mark min time  = 0.0
mark max time  = 8300.09999084286

sweep call     = 18781
sweep all time = 2496.11091014166
sweep ave time = 0.132906176994924
sweep min time = 0.0
sweep max time = 3.59999790089205

object ave cnt = 27998
object max cnt = 28000
object fin cnt = 28000

改良版

gc call        = 21712
gc all time    = 37968.9984189753
gc ave time    = 1.74875637522915
gc min time    = 0.0
gc max time    = 25000.200009346

mark call      = 21711
mark all time  = 18286.5065373009
mark ave time  = 0.842269197056834
mark min time  = 0.0
mark max time  = 12000.0999929383

sweep call     = 21712
sweep all time = 23478.6201374671
sweep ave time = 1.08136607118032
sweep min time = 0.0
sweep max time = 21000.0999898883

object ave cnt = 26193
object max cnt = 26195
object fin cnt = 26195