«前の日記(2005年04月24日) 最新 次の日記(2005年04月26日)» 編集

Matzにっき


2005年04月25日 [長年日記]

_ [用事] 自転車運搬

午前中、長女の自転車を取りに行く。ついでに妻と昼食。

_ [Ruby] 新GC

とりあえず動くようになった。これで測定できる。

ただまだバグバグで、ちょっと凝ったプログラムを使うとすぐに動かなくなる。 アルゴリズムの原理的な有用性を示すのには十分だが、実用にはまだ遠そうだ。

基本的な考えは1ビットリファレンスカウントとZCTを組み合わせることで、 寿命の短いオブジェクトを再帰的にスキャンすることなく回収するというものだ。 このことにより、世代別GCと同等の効果をあげることができる。

ただし、ライトバリア(というかリファレンスカウントの管理)のコストと、 より頻繁に発生するconservative stack scanのコストは増えるので、 通常GCの削減とのトレードオフになる。

ざっと動かした範囲内では、「生きているオブジェクト」が多いケースではそれなりに有効、 「生きているオブジェクト」があまり多くないケースではすこしだけ遅くなる、 といったところか。

ただ、1ビットリファレンスカウントだけを使ったマイナースキャンはスレッド独立にできるはずなので、 native threadを使う処理系では同期の回数が減ってもっと嬉しいかも。

しかし、本当に論文〆切に間に会うのかちょっと不安。


«前の日記(2005年04月24日) 最新 次の日記(2005年04月26日)» 編集