まず、それがディスクかネットワークかを判断します。書き込み先のディスクから始めます。いくつかのスレッドをスピンアップし、固定サイズのいくつかの異なるファイルにランダム データを書き込む簡単なアプリを作成します。かかる時間を測定します。1 つの大きなファイルと多数の小さなファイルの書き込みを測定します。ディスクの場合は、多くの個別の書き込み操作と低速の RPM ドライブが原因である可能性が最も高くなります。または、不適切に構成されたディスク アレイに書き込んでいる可能性があります。
次に、ネットワークを確認します。ルーターが貧弱または過剰に機能していませんか? すべてのマシンとルーターが速度とネゴシエーションに同意していることを確認してください。ルーターの 100Mbit-FullDuplex とサーバーの 100Mbit-AutoNegotiateは同じものではありません。(これは私たちの場合であり、非常に役立ちました)
Benがコメントしたように、ファイルを圧縮して 1 つの大きなファイルを転送すると役立ちます。この問題があり、実際にファイルをTARしました。圧縮なしで圧縮するよりも高速でした。zip と tar の両方にSharpZipLibを使用しました。
読み取りと書き込みを別々のスレッドでバッファリングすることもできます。私たちにとって、 System.File.Copy は、ネットワーク上でさえ信頼できませんでした。ファイル転送を手動でバッファリングすると、ある程度の改善が見られましたが、複雑さを正当化するには不十分でした.