【发布时间】:2009-07-29 15:53:59
【问题描述】:
假设以下为...
输出:
文件已打开...
数据“流式传输”到磁盘。内存中的数据位于一个大的连续缓冲区中。它直接从该缓冲区以原始形式写入磁盘。缓冲区的大小是可配置的,但在流的持续时间内是固定的。缓冲区一个接一个地写入文件。不执行任何查找操作。
...文件已关闭。
输入:
从磁盘从头到尾读取一个大文件(按上述顺序写入)。
在 C++ 中实现最快的顺序文件 I/O 是否有普遍接受的准则?
一些可能的考虑:
- 选择最佳缓冲区大小的指南
- 像 boost::asio 这样的可移植库是否过于抽象而无法暴露特定平台的复杂性,或者它们是否可以被认为是最佳的?
- 异步 I/O 总是优于同步吗?如果应用程序不受 CPU 限制怎么办?
我意识到这将有特定于平台的考虑。我欢迎通用指南以及特定平台的指南。
(我对 Win x64 最直接的兴趣,但我也对 Solaris 和 Linux 上的 cmets 感兴趣)
【问题讨论】:
-
你想重新实现
cp吗?我想我错过了什么......
标签: c++ performance file-io