7

Windows 7 (または 8) または Windows の組み込み xcopy の速度に匹敵する、ローカル マシン、lan、san、および wan でファイルをコピーする最速の方法を示すオープン ソース プロジェクトまたはベスト プラクティス ガイドはありますか?エクスプローラーのコピー?

率直に言うと、すべてのファイル IO が同じように作成されるわけではありません。特定のプロトコルと手法では、さまざまなオーバーヘッドがあります。一部のライブラリは、非同期操作を利用したり、ハードウェアの回線速度を利用したりしません。

使用する大規模なデータ転送のインベントリを作成し、クライアント アプリケーションと外部ベンダーからのアプリケーションの有効性を評価しようとしています。特定のサーバー アプリケーションは最悪の犯罪者です (Java ベースは最悪の中でも最悪です)。

この調査の範囲を SMB 2 および 3 (windows7 および 8 の cifs) に限定しています。

  • POSIX ライブラリを使用する場合、速度に不利な点はありますか。(fread、fopen、fseek など)
  • win32 呼び出し (CopyFile2、ReadFileEx) を使用する利点はありますか
4

1 に答える 1

2

xcopy実際には、特にディスク間またはローカル ネットワーク間でファイルをコピーする最速の方法ではありません。はるかに高速なTeraCopyという商用製品があります。これはクローズド ソースなので、どのように機能するかは完全にはわかりませんが、主な違いの 1 つは、単一のループを使用してデータのチャンクをメモリ バッファーに読み取り、そのバッファーを新しい場所に書き込むのではなく、 2 つのスレッドとプロデューサー/コンシューマー キュー。

プロデューサは、ソース ファイルのチャンクを読み取り、それらをキューに入れます。コンシューマーはキューから読み取り、ターゲットに書き込みます。ここでの利点は、読み取りと書き込みを同時に実行できることです。ただし、注意が必要であり、プロデューサーにキューのサイズを監視させ、キューを大きくしてメモリを使いすぎないようにする必要があります。通常、読み取りは書き込みよりも高速ですが、ソースと宛先にも依存します。場所。

于 2012-08-09T03:38:24.513 に答える