7

是否有开源项目或最佳实践指南显示了在本地机器、lan、san 和 wan 周围复制文件的最快方法,可以与 windows7(或 8)或 windows 的内置 xcopy 的速度相媲美探险家副本?

说白了,并不是所有的文件 IO 都是一样的。在某些协议和技术中有不同的开销。一些库没有利用异步操作或利用硬件的线速度。

我正在盘点我们使用的大量数据传输,并尝试评估我们的客户端应用程序和来自外部供应商的应用程序的有效性。某些服务器应用程序是最严重的违规者(基于 java 的应用程序是最糟糕的)。

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

  • 使用 POSIX 库的速度是否存在劣势。(fread、fopen、fseek 等)
  • 使用 win32 调用(CopyFile2、ReadFileEx)有什么好处吗?
4

1 回答 1

2

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

生产者读取源文件的块并将它们放入队列中。消费者从队列中读取并写入目标。这里的优点是可以同时进行读取和写入。您确实需要小心并让生产者密切关注队列大小,并且不要让队列太大而无法占用太多内存 - 通常读取会比写入快,但这也取决于源和目标地点。

于 2012-08-09T03:38:24.513 回答