我浏览了一些链接,这些链接讨论了使用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 ++编写的。
最佳答案
装入DVD,打开()要复制的文件,然后使用sendfile()。如果您想复制完整的DVD,则也可以尝试打开()DVD的/ dev条目,并将该描述符传递给sendfile()。
$ man 2 sendfile
“ sendfile()在一个文件描述符和另一个文件描述符之间复制数据。因为此复制是在内核中完成的,所以sendfile()的效率要高于read(2)和write(2)的组合,后者需要往返于彼此的数据传输用户空间。”