如果我们采用特定大小的文件,哪个操作会执行得更快?读取整个内容或将内容写入文件。打开文件的模式是否存在性能依赖性。
答案 0 :(得分:2)
读取和写入文件速度与语言无关,但与您使用的磁盘驱动器无关。
使用一种或另一种语言可以为CPU绑定应用程序带来优势。
答案 1 :(得分:1)
我有点惊讶,因为如果你必须写,这个问题就没有意义了。如果阅读速度更快(反之亦然),它就无济于事。无论如何,你必须做你必须做的事。
那就是说,写作通常比较慢。我说“通常”是因为你没有必要直接看到阅读和写作的速度。
在C ++中读取和写入在应用程序级别进行缓冲,并且(通常)再次在操作系统级别进行缓冲。因此,您看到的“写入速度”是将数据复制到缓冲区的速度,并最终将缓冲区刷新到操作系统。
这种诡辩被抛在一边,写作(通常)比阅读慢,因为这是设备的工作方式。硬盘只能编写完整的集群,而固态磁盘只能编写整个集群组(通常大约512kiB)。这意味着定期写入涉及读取先前写入数据的完整“单元”,修改它并写回整个单元。此外,它可能(在某些设备上)重新读取数据以确保已成功写入。这显然必须比阅读慢。
请注意,操作系统在很大程度上合并写入,因为写入通常由虚拟内存子系统懒惰地执行,除非您明确要求同步。读取也是如此,因为虚拟内存系统通常预先存储大量数据(通常是64-128kiB左右)。
因此,除非您的读/写巨大,否则您看到的任何时序都无法与真实的读/写时序相对应。