どれ位遅いかと言うと、単一スレッドでシリアルに処理すると4分で終わる処理が3スレッドにすると50分掛かる。1桁違う。恐るべしマルチスレッド。ただし、処理は一応きちんと行われる。それにしても遅い。CPU使用率は5%位なんでコンテキストスイッチじゃなくて余程馬鹿なロックかI/Oネックですな。本体のランプを見るとディスクアクセスランプが煌々と光っているのでI/Oだろう。
 C:\Documents and Settings\ユーザ名\Local Settings\Temp\ の下に、magick-xxxxxxって名前の数百MBのファイルが4つ程出来たり消えたりしている。察するにこりゃMagickImageの実体に違いない。アロケートするとここに作られる訳だ。メモリにあるのかと思ってたらディスク上にあったとはな。多分メモリマップドファイル。私も嘗て同じような事やったから何となく判る。道理でImageMagick利用の新型は、幾ら内部は全部カラーとは言え、自前でDIBSectionにBitBiltする旧型に比べて遅いと思ったよ。白紙画像の準備に数秒だもんな。まぁディレクトリを見てると1回の処理にファイル4つ、計800MBが使われてるようなので仕方ないか。昔は800MBもメモリに載らなかった。
 それにしても遅い理由は判ったが、シングルを3スレッドにしただけでこうも遅くなるものだろうか。イマイチ解せぬ。ノートPCだからストレージのコントローラが弱いのかしら。Ultra320 SCSIとかなら速くなるかも。
 んでシングルスレッドにしてノートPCだと大体20ページの面付け処理(JMagick)に13分、白黒変換(ImageMagickをキック)に14分、で大体30分。白黒変換はImageMagickのmagrifyを使ってるけどこいつはさっきのディレクトリに巨大ファイルは作らず。またCPUも2コアで50%〜70%、たまに100%をキープしているのでメモリ上で処理してるな。JMagickでも何か指定することでメモリ上での処理になったりするのだろうか?JMagickのドキュメントが酷いので良く判らぬ。ImageMagickの本は使い方調べるのは便利だがそこまで突っ込んでは書かれていない。ソース読むのは面倒。
 差し当たり、JMagickでの処理は主にI/OでCPUは20〜50%、白黒変換はCPUが主なので、これらを平行にしてみるか。ちょっとCPUが足りなくて逆効果な気がしないでも無いんだけどまぁ戻すのは直ぐできるし。
 あと、思いついたんだけど画像アロケートの度に280MBのファイルを作り消すなら、画像は白で塗りつぶして再利用の方がもしかしたら速いかも知れないな。