Re: realtime GC (Re: GC Re: LISPを... )
kono@ie.u-ryukyu.ac.jp (Shinji KONO) writes:
> > こういう例はありますが、残念ながら Unix や Windowsで動くLispやJavaの
> > (一般に手に入る)処理系で、リアルタイムGCが実装されているものは知りませ
> > ん。
>
> なんでなんでしょうね。やっぱり難しい? あるいは需要がない?
だから、
: じゃあ、なぜリアルタイムGCを持っている処理系がないんだと言うことになり
: ますが… それはUnixやWindowsでGCだけリアルタイムにしても無意味だから。
: リアルタイムGCの数%のオーバーヘッドの分だけ損してしまう。
ってことです。作る甲斐がないです。UnixやWindowsでできる程度のソフトリ
アルタイム処理(ミスする確率が低ければ良い)なら、別にリアルタイムGCにす
る必要はないし。
> GCのない言語はいまだにはびこっているわけで、(おそらく第十法
> 則には、GCは含まれてないでしょ?) GCがなくても、ゴミを定数オ
> ーダで回収できる場合が大半だし、そうでなくても、alloc/free
> 比率を保証する手間を取るぐらいだったら、GCがあってもなくても
> 同じ、だったら、なしの方が良い、(自分の感知しないところで巨
> 大なデータ処理が行われたりしないとか、キャッシュレベルのデー
> タ局所性を破壊されないとか)ってところなのかなぁ。
すいません。上の文章の意味が良く分かりません。
「alloc/free 比率を保証する手間を取る」とは?
GCがあってもなくても、「生きているデータの最大量」の1.x倍のメモリ量が
いるのは同じですが、malloc/freeだとその比率を保証するのが大変という意味?
それは確かにその通りですが、GCを使わない理由にはなりませんよね(逆です
よね)。
「GCがあってもなくても同じ、だったら、なしの方が良い」とは?
効率が同じで、楽(freeしなくてよい)だったり間違いが少なくなるなら、GCあ
りの方が良いですよね。
「自分の感知しないところで巨大なデータ処理が行われたり」
best fitとかoptimal fitのmallocもけっこうな事をやってますが…
freeも、ブロックの結合が連鎖する場合とかね。
「キャッシュレベルのデータ局所性を破壊されないとか」
malloc/freeより世代別GCの方がマシかも。
> 文化的なところも大きいんでしょうけどね。
JavaやC#やVBから入る人が増えれば、その変の抵抗は減ってくるのでは。
むしろ、いま計算機を教えてる人に、Cの文化が染み着いちゃっててGCに関し
て迷信を信じている/GCに抵抗のある人が多いかも知れませんね。
前田敦司
Fnews-brouse 1.9(20180406) -- by Mizuno, MWE <mwe@ccsf.jp>
GnuPG Key ID = ECC8A735
GnuPG Key fingerprint = 9BE6 B9E9 55A5 A499 CD51 946E 9BDC 7870 ECC8 A735