人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

スバリ解決で1000ポイント差し上げます。
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のデュアルブート
#質問は代理で行っていますので、確認が多少遅れる場合がありますので、ご了承ください。

●質問者: takumitakumi
●カテゴリ:コンピュータ
✍キーワード:Celeron CPU Eクラス IDE open
○ 状態 :終了
└ 回答数 : 6/6件

▽最新の回答へ

1 ● typista
●35ポイント

http://www.microsoft.com/japan/windowsserver2003/technologies/fi...

ファイル サービス

ファイルサーバ系のサービスが起動していることで、パフォーマンスが落ちているとか?

関連しそうなサービスを止めて試してみるとか。

または、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は該当するように書かれていませんが、こういう事例もあります。

http://www.hdbench.net/software/hdbench/

HDBENCH

HDBENCHで、XPと2003Serverを比べてみては。

http://forums.belution.com/ja/vc/000/220/51.shtml

[00022051] Re:CFileのWriteにFlushは必要?

ご存知かとは思いますが、Flush()は遅延書き込みをその場で同期するための関数です。

◎質問者からの返答

ありがとうございます。

有効性を調査してみます。


2 ● typista
●35ポイント

http://www.microsoft.com/resources/documentation/WindowsServ/200...

IISのサービスが起動していれば、その可能性もありますね。

Web(ASP)サーバとして外部公開していない状態で、IISが動いているのであれば停止すればパフォーマンスに影響しそうです。

◎質問者からの返答

ありがとう御座います。

有効性を調査してみます。

また、

HDBENCH でXPと2003serverを比較したら?ですが、

以前HDBENCH ver3.30でHDD性能を試したところ

Read、WriteはXPも2003もほぼ同等の数値でした。FileCopyだけが2003ではXP

の3分の1程度の値しか出ませんでした。

Read 50000

Write 50000

FileFopy XP :15000

2003:5000


3 ● terra5
●70ポイント

http://www.atmarkit.co.jp/fwin2k/special/win9xorwin2k/win2kproce...

特集:Windows 9x or Windows 2000? 9.Windows 2000のプロセス管理メカニズム(2)

サーバー系のOSだと各種コンフィグレーション等がバックグラウンド優先になっていることが多いので、その影響も考えられます。

通常のXPだの2000だのはフォアグラウンド優先になってます。

また、単純に動いているサービスの数も種類も違うでしょうから、そういう条件もなるべく同じにしないと違って当然ということもあるかも知れません。

http://kugutsushi.s12.xrea.com/blog/index.cgi?id=9

傀儡師のプログラミング日記

また、時間測定法等も気になります。

Windowsの時間精度は通常10msec単位程度ですから。

高精度の時間が必要な場合はQueryPerformanceCounterを使う必要があります。

平均的な処理時間ならここまで精度はいらないとは思いますが。

◎質問者からの返答

ありがとう御座います。

検討いたします。


4 ● ohmix1
●70ポイント

http://support.microsoft.com/default.aspx?scid=kb;ja;332023

書き込みキャッシュが有効な場合の遅いディスク パフォーマンス

いまいち自信はありませんが...


Win2K(SP3)以降はflush(APIのFlushFileBuffers)した時にディスクのバッファに対しても即座にディスクに書き込むよう命令するようになった模様。


質問ではXPと2003ですのでどちらも同じになってもいいようなものですが、

flush自体がドライブに対して命令を出しているのため2003の方が多くのプロセスが動いており、ドライブの書き込みバッファを多く消費し(flush時に書き込みし)ているのでは?(あくまで推測)


これを検証するには、デバイスのプロパティを確認して「書き込みキャッシュを有効にする」をOFFにして実験すると分かると思います。

◎質問者からの返答

ありがとう御座います。

まずは参考させていただきます。


5 ● firewood
●70ポイント

http://www.hatena.ne.jp/

はてな

URLはダミーです。

数MSということはタスク切替が起きているのではないでしょうか。

単純に、プロセッサのスケジュールをプログラム優先にしたら速くなったりしませんか?

◎質問者からの返答

ありがとう御座います。

チェックしてみます。


1-5件表示/6件
4.前の5件|次5件6.
関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ