リリースビルドで遅くなる
非常に大量のコードを書いた後で気づいたので
挙動からおそらくその辺だと「思われる」のですが
Windows XP SP 3で、Visual C++で
デバッグビルド・リリースビルドしたときの速度を比較してみると
おそらく、メモリマップドファイル絡みの個所で
現状なぜかリリースビルドの方が遅くなります。
巨大なファイルを1度扱ってから再度ほぼ同じ個所を使用した時
デバッグビルドではその間にアプリケーションを1度終了したとしても、その後別に巨大なファイルを使ったりしなければ
どうもシステム的に(?)何らかのキャッシュが効いているようで
1回目で23秒程度かかる処理が、2回目以降は7秒弱で出来てしまいます。
(これは100回やったら99回以上はなるんでは?というくらい安定しています)
対してリリースビルドでは
最初の1回は同じくらいですが
2回目以降でも16秒程度はかかってしまう感じです。
なお、そのけた外れに長い演算の末に出来上がるfloatの配列は、デバッグビルド・リリースビルドで端から端まで完全に一致する、という確認もできています。
アプリ的に
2回目以降の時間を短縮できた方が非常に都合が良いのですが
ビルドの設定はほとんど同じですが、これは仕様でしょうか?
もしこれがキャッシュの方式の問題、であるのなら
Windows APIなどを使うことにより対処可能な問題でしょうか?
あるいは、デバッグビルド・リリースビルドの違いによるものではなく
このアプリケーションのデバッグビルドによって出来た実行ファイルの方に
以前関連付けを行ったりするように(アイコンや、独自ファイル形式ダブルクリックで開けるように)
レジストリを書き換えたのですが
これによってシステムから「なんらかの優先事項」を享受できるようになっているため
だったりする、という可能性もあるのでしょうか?
お礼
回答頂きありがとうございました。