我如何媲美xcopy的速度?

有没有一个开源项目或最佳做法指南显示在本地机器上复制文件的最快方式,lan,san和wan,可以与windows7(或8)或Windows的内置xcopy速度相媲美浏览器副本?

为了生硬,并不是所有的文件IO都是相等的。 某些协议和技术有不同的开销。 某些库不利用asynchronous操作或利用硬件的线速。

我正在清点我们使用的大数据传输,并试图评估我们的客户端应用程序和外部供应商的应用程序的有效性。 某些服务器应用程序是最糟糕的犯罪者(基于Java的是最糟糕的最糟糕的)。

我将这项研究的范围限制在SMB 2和3(Windows 7和Windows 8上的CIF)。

  • 使用POSIX库的速度是否有缺点? (fread,fopen,fseek等)
  • 使用win32调用(CopyFile2,ReadFileEx)有什么好处吗?

xcopy实际上并不是复制文件的最快方法,特别是跨磁盘或跨本地网络。 有一种名为TeraCopy的商业产品,速度要快得多。 它是封闭的,所以我不完全知道它是如何工作的,但其中一个主要的区别是,不是使用一个单一的循环来读取一块数据到一个内存缓冲区,然后把这个缓冲区写到新的位置,它使用两个线程和一个生产者/消费者队列。

生产者读取源文件的块并将其放入队列中。 消费者从队列中读取并写入目标。 这里的优点是可以同时进行阅读和写作。 你需要小心,让制作人留意队列的大小,不要让队列太大以至于不能使用太多的内存 – 通常读取速度比写入速度快,但是也取决于源和目的地位置。