今、大量ファイルをコピーするためにコピーツールを
作っているのですが、WinXPのサーバにLAN越しで
ファイルをコピーすると速度が遅くなります。
WinXP機からLinuxやWinMEへのコピー速度は速いのですが、
WinXP機からWinXP機へのコピーだけが遅いのです。
ファイルコピーにはCopyFileを使っているだけで
とく変わった処理はしていないのですが、何が考えられる
でしょうか?コピー時のネットワーク使用率が低すぎるのも
気になります・・・。
VC6 MFCで、WinXPで作成しています。
よろしくお願い致します。
コピーツールを使わない場合の速度と比べてみましたか?
送り(A)→受け取り(B)
どっちでPG動かしてるの
(B)で動かすほうが早くないですか?
エクスプローラでNTFS対NTFSのときも(B)でコピーするほうが
早いよ
コピーツールを使わないと、早かったです。
他のフリーソフトのコピーツール使っても
早いんだよね(´;ω;~)
プログラムは送り(A)で動かしてます。
確かにB→Aにコピーした時は早い…。
うーむ、なんでだろう。
>確かにB→Aにコピーした時は早い…。
ちょっと俺の表現と違うが同じ意味だろうね
矢印は、たぶん B←A の間違いだろうね
送りAで実行の場合
A:今からデータ送ります(ファイル名、サイズ・・・)
B:受け取れるサイズか調べます、少々お待ちを・・・WAIT
B:OK(受信バッファ用意できました)
A:OKがきた
A:送り出す(送信開始)
B:データ来た
B:キャッシュ開始
B:キャッシュ終了
B:Aへキャッシュは終了した
A:キャッシュは終了したんですか
A:送信終了します
B:送信終了受け取りました
B:書き込みプロセスへの割り込み・・・WAIT
B:指定の場所へ書き出す
B:書き出し終わりました
A:終わったんですか
A:自分のプロセス終了
受け取り側実行の場合
B:お前のところのこれを送れ(ファイル名、サイズ・・・)
A:分かった
A:データ送り開始
B:データキャッシュ開始
B:データキャッシュ終了
A:送信終了
B:自分で要求してるから他のREAD・Writeへ割り込み
バッファ要求も自分へのみ
B:キャッシュデータ書き込み開始
B:書き込み結果をAに返す必要なし
B:書き込みできなかったら、自分にメッセージをPOSTするだけ
う~む・・・うまく表現出来てねーな
通信プロセスでのWAITの入り方の説明はMSのページにもいたはずだが
ごめん、誰かフォローお願いします
なにやら、自己解決しました。
コピー前に、コピー先にフォルダがあるかどうか存在チェックを
入れてたんですが、これをどかして実行してみたら、早くなりました。
コピーするファイル毎にこのチェックを入れてしまってたのがまずかったのかな・・・。
遅くしていた箇所が分かったので、なんとかなりそうです。
REEさん、woodさん、ありがとうございました。