最近、ネットワーク ドライブ上の大きなファイルの読み取りに問題があり、何が間違っているのか特定できません。私は C++ (アンマネージ) と C# の両方で試しましたが、両方でほぼ同じパフォーマンスでした...これはややひどいものでした。
ネットワーク上で 4 KB/秒のファイルを読み取ることもありますが、このファイルがローカル HD にある場合は、HD が出力できる最大データ レートを簡単に達成できます。それは、一度に 64 KB のチャンクを読み取ることです...私は非常識な数まで、またはそれ以下の大きなバッファで試しましたが、大きな違いはありません。
FileStream で BeginRead を使用して C# で非同期 IO を試し、C++ で OVERLAPPED IO と同期読み取りを試しましたが、すべて同じ問題があり、ネットワーク上で低速になっています。
私たちが思いついた唯一の解決策は、実際にファイルを読み取る前に、OS の CopyFile 機能を使用してローカル HD にファイルをコピーすることですが、この方法にはあまり満足していません。CopyFile が私たちとは違うことをしているように見えるだけで、私たちのアプローチよりも信じられないほど高速です。
これがなぜなのか、誰にも手がかりがありますか?