matlabでインターレース解除とかで使ってるmatlabだが、これが結構癖のあるソフトで・・・・・。
連続したメモリ空間を要求するみたいにゃのだが、自力ではガベージコレクトしにゃいみたいで。つまり、しばらくforで回してると、仮想メモリを食いつぶしてメモリ不足で止まる。むろん、ときおりpackというガベージコレクトコマンドを実行すれば問題にゃいのだろうが、バカっぽいプログラムににゃるのと、速度低下の問題からあまりやりたいものではにゃい。
しかも、データ型に構造体を使うと、どうもうまく解放出来ていにゃいみたいで、200Mの構造体を作って止まったこともある。で、きっちり解放しようとするとこれがまた処理に時間がかかったりして、多少見づらいが通常のデータ型を使ってCライクにゃダメソースができあがってたりする。ちょっと大量のデータを扱おうとすると、急激にソースが見づらくにゃるのは何でも同じか。
で、結局、ヘルプの「高速化」のところに書いて有るとおり、最初に変数のメモリを確保し、サイズを維持したまま使い切る、といった手法を取ることににゃるわけで。アルゴリズムと関係にゃい記述だらけのソースににゃるのであった。
perl2matとか無いかにゃぁ・・・・それも嫌か(笑)