不断地写入文件是否会损害程序的性能?

Is continually writing to a file detrimental to the performance of a program?

想象一个读取文件的并行 "high performance program",每个进程对输入数据执行一个任务,然后每个进程在重复此过程之前将任务的输出写入单个共享输出文件。

在性能方面,当每个进程完成一个任务时将输出写入文件是否效率低下?

将结果存储在数组中并在最后将数组写入输出文件是否更有效?

文件通常比 RAM 慢。但是,慢多少?如果减速小于 1%,大多数人不会在意。如果是 50% 的减速,有些人仍然不会在意。

一如既往地衡量性能,以一种或另一种方式对其进行衡量,然后确定差异是否显着。该决定通常取决于高度特定于应用程序的因素。

这是一个问题,必须在没有客户端进程或线程延迟的情况下利用完整的 IO 磁盘读写。如果使用标准 C 库调用,它会使用在换行符或调用 fflush() 时刷新的内存缓冲区。如果数据不够大,使用数组是有效的,可以在最后写入文件,因此对性能要求高的任务不会遭受 IO 延迟。