2012-07-17 12 views
6

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

平凡であるために、すべてのファイルIOが均等に作成されるわけではありません。特定のプロトコルや技術にはさまざまなオーバーヘッドがあります。一部のライブラリは、非同期操作を利用したり、ハードウェアの回線速度を利用したりしません。

私は、私たちが使用する大量のデータ転送のインベントリをとり、クライアントアプリケーションと外部ベンダのアプリケーションの有効性を評価しようとしています。特定のサーバーアプリケーションは最悪の犯罪者です(Javaベースは最悪の最悪です)。

私はこの研究の範囲をSMB 2と3(windows 7と8のcifs)に限定しています。

  • POSIXライブラリを使用する速度に問題がありますか? (関数fread、関数fopen、fseek関数など)
  • はどんな利点は、Win32コール(CopyFile2、ReadFileEx)
+2

xcopyが文書化されていないAPI関数PrivCopyFileExWを使用しているように見えます。しかし、文書化されたCopyFileExは、おそらく非常によく似た動作をします。 –

答えて

1

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

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

関連する問題