また一つ、CPythonとIronPythonの違いに出くわしました。
たくさんのファイルをなめて、情報をとってくるようなスクリプトを、CPythonとIronPythonの両方で実行したのですが、
CPythonの方は、どんどんメモリ(ヒープ)を食いつぶし、そのうち止まってしまいます。対して、IronPythonの方は、ときどきGCが走るらしく、メモリ使用量のグラフも安定したノコギリ型になってます。
循環参照も作っていない(し、たとえ作っていても、CPythonのGCも循環参照もきちんと解放できるはずな)ので、この違いは気になります。
原因は、多分、CPythonが文字列をインターンしていて、IronPythonがしていないことなんじゃないかと踏んでいるのですが・・・確認はできていません。
とりあえずは、IronPython Preferredということでごまかしておきます。
どうしてもCPythonだといわれたら・・・インターンされたデータを手動で開放する(中間データをファイルに格納しながら、何度かインタプリタを起動するような)仕掛けに書き換えますけど・・・めんどくさい。
たくさんのファイルをなめて、情報をとってくるようなスクリプトを、CPythonとIronPythonの両方で実行したのですが、
CPythonの方は、どんどんメモリ(ヒープ)を食いつぶし、そのうち止まってしまいます。対して、IronPythonの方は、ときどきGCが走るらしく、メモリ使用量のグラフも安定したノコギリ型になってます。
循環参照も作っていない(し、たとえ作っていても、CPythonのGCも循環参照もきちんと解放できるはずな)ので、この違いは気になります。
原因は、多分、CPythonが文字列をインターンしていて、IronPythonがしていないことなんじゃないかと踏んでいるのですが・・・確認はできていません。
とりあえずは、IronPython Preferredということでごまかしておきます。
どうしてもCPythonだといわれたら・・・インターンされたデータを手動で開放する(中間データをファイルに格納しながら、何度かインタプリタを起動するような)仕掛けに書き換えますけど・・・めんどくさい。