路傍のプログラマ

只のプログラマが綴る愚痴と備忘録

IronPython Preferred

2008-01-11 23:00:59 | プログラミング
また一つ、CPythonとIronPythonの違いに出くわしました。

たくさんのファイルをなめて、情報をとってくるようなスクリプトを、CPythonとIronPythonの両方で実行したのですが、

CPythonの方は、どんどんメモリ(ヒープ)を食いつぶし、そのうち止まってしまいます。対して、IronPythonの方は、ときどきGCが走るらしく、メモリ使用量のグラフも安定したノコギリ型になってます。

循環参照も作っていない(し、たとえ作っていても、CPythonのGCも循環参照もきちんと解放できるはずな)ので、この違いは気になります。

原因は、多分、CPythonが文字列をインターンしていて、IronPythonがしていないことなんじゃないかと踏んでいるのですが・・・確認はできていません。

とりあえずは、IronPython Preferredということでごまかしておきます。

どうしてもCPythonだといわれたら・・・インターンされたデータを手動で開放する(中間データをファイルに格納しながら、何度かインタプリタを起動するような)仕掛けに書き換えますけど・・・めんどくさい。