Jim*_*hel 13
你可以通过一个简单的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
Run Code Online (Sandbox Code Playgroud)
写这是一件非常简单的事情.我执行此操作的程序几乎与Robocopy一样快,并且当您从服务器复制非常大(100千兆字节)的文件时,不会导致Robocopy引起的各种问题.
有关大文件复制问题的更多信息.
请注意,如果您正在读取和写入同一物理磁盘,则此异步读/写操作对性能没有太大作用.当源和目标位于不同的驱动器上时,它最有效.
| 归档时间: |
|
| 查看次数: |
2293 次 |
| 最近记录: |