plotの速度と、OSのバージョン

仕事で作っているコードの一つに、与えられたファイルの中にあるサンプルの、全ての組み合わせに対して散布図を描く、というのがあるのだけど、最近サンプルが非常に多いデータが来て、メモリ足りなくて転けるわ時間かかるわで、もうさんざんw
メモリは余計なデータを読み込まない事で当面はごまかせそうな感じだけど、どこで時間がかかっているのか、Rprofを使って調べてみたw
..."system"と".External"だった...!

Rのbitmap()関数は遅い

散布図を、後でhtmlの中で使うためにpng形式で保存してたのだけど、いろいろあってbitmap関数を使っていた。これは、データを一度散布図のデータをPostscriptで書き出して、unix pipeでghostscriptに渡して、pngにしてもらうというもの。ところが、時間かかるだけでなく、まれに'gs cannot found'とか言ってR自体が落ちてしまう>< そのうえ、Rprofで示されたように、そこですごく時間がかかってる><

pngで直接書き出そうとしてみたら

他にもpng()という関数があって、ちょこちょこと試した範囲では動いた、のだけど。

実行環境の影響

試したら動いたので、普段使っているPCクラスタのノードで動かそうとしてみると、あっさり落ちてしまった。え? まあCPUも違うけど、OSの違いとか調べて行くと次のような事が。

  • Rのpng()関数は、Xもしくはcairoを利用している
  • PCクラスタのノードのようなヘッドレスの環境だと、Xfree86は動いてくれない><
  • X.orgが入るのはCentOS5から。そのPCクラスタはCentOS4><
  • CentOS4環境には、わざわざ探さない限りcairoは入ってない><

[badknowhow]今後の対応

...ちょっと考えまする...。postscriptなり何なりで書き出してimagemagicで変換、という手があるところまでは把握したけど、オプションが結構ややこしい事になりそうで、後回しにしたい...