当程序作者没有这样做时,缓冲程序输出

当程序作者没有这样做时,缓冲程序输出

我有一个程序,我怀疑它编码不正确。我认为它不进行缓冲,而是逐行写入磁盘。我指定文件名的方式是 -e 。问题是,我是否可以尝试让它写入 RAM 并在应用程序完成时将其移动到磁盘?

实际上我想要一些像 /dev/null 的东西,但我可以从那里收集输出

答案1

有一点解决方法可能会提高性能 - 您可以创建一个 ramdisk 并让它将其输出发送到那里。网上有很多操作指南,但这里有一个:

http://www.vanemery.com/Linux/Ramdisk/ramdisk.html

答案2

除非应用程序明确要求同步行为,否则大多数文件系统都会缓冲写入。例如,ext2 文件系统将等待最多 30 秒,然后再将写入刷新到磁盘。因此,即使像您怀疑的那样糟糕的代码也不会导致性能显著下降。

您可以尝试使用asyncmount 选项来改变文件系统的行为:

async  All I/O to the filesystem should be done asynchronously.

另一种方法是使用命名管道。这将为您提供在内存中缓冲输出的所有灵活性。

相关内容