Robocopy背后的算法是什么?
题
我很想知道是什么使Robocopy(强大的文件副本)如此快,坚固。任何身体都知道用于机器人的API/ALGO是什么?有人学习机器人吗?
我要问,因为我必须编写一种方法(在.NET/C#中),该方法将快速复制目录/文件,而无需错误...数据量可以达到15GB,由于各种原因,我不能简单地调用Robocopy。
谢谢!
解决方案
您可以通过简单的C#程序非常接近Robocopy的速度,该程序进行异步读取和使用标准编写 FileStream
带有64K缓冲区。较大的缓冲尺寸最大256K将使性能略有提高。超过256K将在一个令人惊讶的程度下放慢速度。在我的测试中,使用512K缓冲区的时间几乎是用256K缓冲液复制的两倍。
这个想法很简单:
Read the first buffer from the source file
do
{
start asynchronous write to destination file.
Read the next buffer from the source file
wait for asynchronous write to complete
} while not end of file
这是一件非常简单的写作。我的程序几乎与Robocopy一样快,不会引起那种 机器人造成的问题 当您从服务器复制非常大的(一百千兆字节)文件时。
更多信息 关于大文件复制问题。
请注意,如果您正在阅读并写入相同的物理磁盘,则这种异步读/写入对性能无济于事。当源和目的地在不同的驱动器上时,这是最有效的。
不隶属于 StackOverflow