GCについて
id:flappphys:20041115#p1 で触れたGCの実装についてのチュートリアルがいつの間にか更新されていたようなので,改めて読んでみた.
- http://www.logos.t.u-tokyo.ac.jp/~endo/gc/gc.pdf 一般教養としてのGarbage Collection
ときが経ってから再び読むとやはり頭がさっぱりしてよい.あのときは分からなくて読み飛ばしたところも少し頭に入ったかな.あれからいくつかの処理系での実装を(分からないなりに)眺めたせいもあるだろう.
一般教養 でcopying GCとmalloc(3)
/free(3)
の性能を比べる議論は, id:flappphys:20051221#p1 に貼ったAppelの議論と(記号の使い方を除いて)同一だった.やはりあれは古典として影響力を持っているということかな? 読んでみたら今でもけっこう説得力があったし... でもやはり本気になったらGC本だろうなぁ.ちなみに "faster than stack allocation" というのは,「メモリが十分多ければGCをほとんど行わずにプログラムが終了し得る ⇒ スタック領域のpush/popもfree(3)
も要らない」ということ.
2ch情報の「必要なメモリ領域はスタックに取る」手法↓はかなり微妙(笑)ぽい.OcamlOptに負けたとか言ってるし,まぁプロトタイプだからそれは仕方ないにしても,オーソドックスなregion inferenceを先に勉強したほうがよいようだ.
- http://www.tcs.informatik.uni-muenchen.de/~mhofmann/nordic.ps.gz A type system for bounded space and functional in-place update or "how to compile functional programs into
malloc()
-free C"