Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 如何与xcopy的速度相匹敌?_Windows_File Io_Smb - Fatal编程技术网

Windows 如何与xcopy的速度相匹敌?

Windows 如何与xcopy的速度相匹敌?,windows,file-io,smb,Windows,File Io,Smb,是否有开源项目或最佳实践指南显示了在本地计算机、lan、san和wan周围复制文件的最快方法,其速度可与windows7(或8)的内置xcopy或windows资源管理器复制媲美 坦率地说,并不是所有的文件IO都是相同的。在某些协议和技术中存在不同的开销。有些库不利用异步操作或硬件的线速度 我对我们使用的大型数据传输进行了盘点,并试图对我们的客户应用程序和外部供应商的应用程序的有效性进行评级。某些服务器应用程序是最坏的罪犯(基于java的应用程序是最坏的应用程序中最坏的) 我将此研究的范围限制在

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

坦率地说,并不是所有的文件IO都是相同的。在某些协议和技术中存在不同的开销。有些库不利用异步操作或硬件的线速度

我对我们使用的大型数据传输进行了盘点,并试图对我们的客户应用程序和外部供应商的应用程序的有效性进行评级。某些服务器应用程序是最坏的罪犯(基于java的应用程序是最坏的应用程序中最坏的)

我将此研究的范围限制在SMB 2和3(windows7和Windows8上的cifs)

  • 使用POSIX库在速度上存在缺点。(fread、fopen、fseek等)
  • 使用win32调用(CopyFile2、ReadFileEx)有什么好处吗

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


生产者读取源文件的块并将它们放入队列。使用者从队列中读取数据并写入目标。这里的优点是读和写可以同时进行。不过,您确实需要小心,让制作者密切关注队列大小,不要让队列太大而占用太多内存——通常读比写快,但这也取决于源和目标位置。

看起来xcopy使用了一个未记录的API函数PrivCopyFileExW。但是,有文档记录的CopyFileEx的性能可能非常相似。