VC6でMFCのCFileクラスを用いてファイル書き込みのプログラムを作りました(下記の用な流れ)。
CFile f;
f.Open(〜〜);
f.Write(〜〜);
f.Flush();
f.Close();
ここで判らない事が発生しました。
Flush()メソッドの処理時間が、Windows2003Serverでは XP 時の数倍程度かかってしまいます。
又、Write()をコールせずに 単に Open() 後 Flush() をおこなっても同様で、
XP:0〜1msec、2003server:5〜15msec のような感じになります。
なにか変えれば2003ServerでもXPと同様の処理時間になるのでしょうか。
(OSの設定とか?)
ちなみにPC環境は以下のようになっています。
CPU:Celeron 2GHz
メモリ:512MB
ディスク:IDEの80GB
OS:XP Pro(SP2),2003Serverのデュアルブート
#質問は代理で行っていますので、確認が多少遅れる場合がありますので、ご了承ください。
ファイルサーバ系のサービスが起動していることで、パフォーマンスが落ちているとか?
関連しそうなサービスを止めて試してみるとか。
または、HDDベンチなどでも、同様に2003Serverのほうが結果が悪かったりしませんか?
ズバリ解決できる回答ではないかな。
http://support.microsoft.com/kb/822219/
You experience slow file server performance and delays occur when you work with files that are located on a file server
2003は該当するように書かれていませんが、こういう事例もあります。
HDBENCHで、XPと2003Serverを比べてみては。
http://forums.belution.com/ja/vc/000/220/51.shtml
[00022051] Re:CFileのWriteにFlushは必要?
ご存知かとは思いますが、Flush()は遅延書き込みをその場で同期するための関数です。