我已经浏览了一些链接,其中讨论了使用FILE_FLAG_NO_BUFFERING
和FILE_FLAG_OVERLAPPED
在Windows中复制文件的最快方法。它还谈到了如何
BUFFER SIZE
作为256KB and 128KB
的读写操作请求速度高于1Mb
。此链接为: -
Explanation for tiny reads (overlapped, buffered) outperforming large contiguous reads?
我也在linux中使用类似的方法,这样我就可以快速地将DVD的内容复制到硬盘中。所以我想知道Linux中是否有一些文件操作标志可以提供最好的结果,或者Linux中的哪种复制方式最好?我的代码都是用c ++编写的。
答案 0 :(得分:1)
安装DVD,打开()要复制的文件,然后使用sendfile()。如果您想要复制完整的DVD,您也可以尝试打开()DVD的/ dev条目并将该描述符传递给sendfile()。
$ man 2 sendfile
“sendfile()在一个文件描述符和另一个文件描述符之间复制数据。因为这种复制是在内核中完成的,所以sendfile()比read(2)和write(2)的组合更有效,这需要传输数据进出用户空间。“