win7(64bit)の悲劇 - fopen()にご注意 -
で、
やっとかいはつできるー!
と思ったら、異様ーに重い。
デバッグができない( 前頁参照 )ので、要所要所で時間を計測してみると、
ファイル操作が尋常じゃなく重い。
何か一言書き出す度に40msとかアリエナイ…。
ただ、「ファイル書き込み」なんて標準機能がそんなにかかるとは考え辛かったので、
今まで使っていたfopen()以外の方法(「CreateFile()」「_open()」)を試してみるも、
これもダメ。
んじゃーどうするのよ?
答えは単純。頻繁にopenしなければいい。
exeの最初でopenして、終わりにcloseすればいいんじゃね?
という話。
本当はやりたくないんだけどね。
ファイルが開きっ放しになるわけだから、
他からopen中のファイルにアクセスできなくなるのは勿論、
exeが不正終了しようものなら、
開きっ放しのファイル=不正終了したexeからしかアクセスできないファイル
=アクセスできないファイル
が出来る可能性があるので。*1
まぁしかし、背に腹は変えられないので、試してみたら上手くいくわけで。
…しかも、0msで返ってきてるな…そんなに速かったっけ?
試しに間にSleep( 20 )あたりを挟んでみたら、きっちり20msごとになっているし、
間違いではなさそう…。
しかし、前述の問題があるのであまり使いたくないな…。
一応、C++なのでtry{}catch{}とかが使えたりするので、
メイン部分をtry内部に入れて、catchでfclose()するようにしてみたりとか
小細工は入れてあるけど、どこまで機能するものなのか…。
*1:まぁOS再起動させれば多分大丈夫ですけど、さすがにそれはどうかと