今日も1日中プログラミング。ずっとコンピュータに向かって集中して作業をしていると、あっと言う間に時間が経ってしまい、その日の印象がほとんど残らない。
ええと、今日は開発中のファイルフォーマットのデータを読み出すビュワーの作業を進めた。今回の表示では、500MBくらいのサイズのデータからとびとびに値を読み出さなければならない。このくらいのファイルサイズになると、動作するPCによってはファイルの内容の全部を読み込めるだけの空きメモリが常にあるとは限らない。それに、そもそも条件によってはファイルサイズがWindowsXPのメモリ空間の上限である2GBを越える場合もありうる。なので、必要な部分だけを適宜読み込むようにしている。
今回は他の都合もあってメモリマップドファイルを使った。最初の実装では500MBにほぼ均等に分散している約500KBの値を読み込んで表示するのに1分以上かかっていた。これをメモリマップの回数を減らすことで約30秒まで短縮した。できればもう少し高速化したい。メモリマップドファイルを止めて普通にファイルストリームで読み出せば高速になるのだろうか?これは来週調べてみる。
その後、開発中のファイルフォーマットについて海外のメーカーにメールで連絡。驚いたことに30分ほどで返事が返ってきた。