哪个文件操作更快,读取或写入

时间:2013-05-27 11:00:15

标签: c++ file

如果我们采用特定大小的文件,哪个操作会执行得更快?读取整个内容或将内容写入文件。打开文件的模式是否存在性能依赖性。

2 个答案:

答案 0 :(得分:2)

读取和写入文件速度与语言无关,但与您使用的磁盘驱动器无关。

使用一种或另一种语言可以为CPU绑定应用程序带来优势。

您可以阅读:What do the terms "CPU bound" and "I/O bound" mean?

答案 1 :(得分:1)

我有点惊讶,因为如果你必须写这个问题就没有意义了。如果阅读速度更快(反之亦然),它就无济于事。无论如何,你必须做你必须做的事。

那就是说,写作通常比较慢。我说“通常”是因为你没有必要直接看到阅读和写作的速度。

在C ++中读取和写入在应用程序级别进行缓冲,并且(通常)再次在操作系统级别进行缓冲。因此,您看到的“写入速度”是将数据复制到缓冲区的速度,并最终将缓冲区刷新到操作系统。

这种诡辩被抛在一边,写作(通常)比阅读慢,因为这是设备的工作方式。硬盘只能编写完整的集群,而固态磁盘只能编写整个集群组(通常大约512kiB)。这意味着定期写入涉及读取先前写入数据的完整“单元”,修改它并写回整个单元。此外,它可能(在某些设备上)重新读取数据以确保已成功写入。这显然必须比阅读慢。

请注意,操作系统在很大程度上合并写入,因为写入通常由虚拟内存子系统懒惰地执行,除非您明确要求同步。读取也是如此,因为虚拟内存系统通常预先存储大量数据(通常是64-128kiB左右)。
因此,除非您的读/写巨大,否则您看到的任何时序都无法与真实的读/写时序相对应。