Kakasi の分かち書きのパフォーマンスを向上させるパッチ2

昨日作成したパッチについて、しばらくは問題なく動いていたのだけど、使い続けているうちに問題が発生。なぜだかわからないが、しばらく使い続けていると、分かち書きに失敗したり、あるいは分かち書きの結果が文字化けしてしまう(結果的に分類結果に影響が出る)ようになってしまった。どうも、辞書をずっと開きっぱなしにしてオブジェクトを使い回すのは問題があるようだ。
ということで、メール 1 通を処理するたびに辞書を開いて閉じるように改修を行った。これにより、若干速度は低下すると考えられる(体感ではほとんど変わらないように思われる)が、昨日書いた、待機中のメモリ消費量が大きくなるという問題は回避される。この修正を行ってから、テストで数百通のメールを受信してみたが、上に書いたような問題は起こらなくなった。
また、そのテストの過程で、Windows 環境での POP3 同時接続の排他処理に穴があることがわかったので、それについても修正。これまで、Mutex の初期化を MailParse.pm の中で行っていたのだけど、それを Bayes.pm の初期化ルーチンに移動。これで問題は起こらなくなったはず。メモ:fork() で作られた子プロセスの中で定義された変数は他のプロセスには共有されないが、親プロセスで定義されていた変数は、子プロセスにもコピーされる。
私の環境でもしばらくテストしつつ、他の方の動作報告を待った上で、日本語化パッチとしてまとめたいと思う。