gpt4 book ai didi

.net - Robocopy 背后的算法是什么?

转载 作者:行者123 更新时间:2023-12-04 16:56:18 25 4
gpt4 key购买 nike

我很想知道是什么让 Robocopy(强大的文件复制)如此快速和强大。任何机构都知道用于 Robocopy 的 API/Algo 是什么?有人学过Robocopy吗?

我问是因为我必须编写一个方法(在 .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 一样快,并且不会导致 problems that Robocopy causes当您从服务器复制一个非常大(数百 GB)的文件时。
A bit more info关于大文件复制问题。
请注意,如果您正在读取和写入同一个物理磁盘,则这种异步读/写操作对性能没有太大影响。当源和目标位于不同的驱动器上时,它是最有效的。

关于.net - Robocopy 背后的算法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3989472/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com