【发布时间】:2015-11-13 12:08:23
【问题描述】:
我想在我的 C/C++ 程序中复制大文件(~ 10 GB),手头有两个选项:1)编写我自己的复制函数(可能使用大缓冲区),以及 2)调用系统复制命令(在 Windows 上复制,在 Linux 上复制)。
正如我所见,在 Windows 上使用“Ctrl + C”和“Ctrl + V”时,复制大文件的速度非常快。我不确定我们是否能比 Windows 操作系统做得更好。
哪个是最好的选择?
【问题讨论】:
-
在 Windows 中,为什么不使用旨在更有效地处理大文件和文件集的命令之一呢?像
xcopy、robocopy至少还有一个,我忘记名字了。 -
我想说最好的选择是使用
boost::filesystem::copy,同时我们等待实现与std::experimental::filesystem::copy一起发布。 -
我认为这是 Stack Overflow 问答提供了一些不同的方式来进行这样的复制(以及一些相对时间)stackoverflow.com/questions/10195343/…
-
@MichaelPetch:我在发布我的问题之前确实阅读了这个问题。我想知道为什么我们不使用复制 shell 命令而不是编写一个新命令?例如,在 Windows 上,robocopy 需要约 1.5 分钟来复制 5 GB(约 55 MB/秒)的文件(Windows 7,核心 i5,8 GB)。我认为这已经非常快了。我们可以自己制造一个更快的吗?
-
便携性是其中之一。如果您编写 C++(或 C 代码)来进行复制,那么您在什么操作系统上使用它并不重要 - 它应该在所有操作系统上以相同的方式运行使用您的方法,您需要了解底层复制机制,就像您提到的 @987654326 @、
cp等