我有一个程序,我怀疑它编码不正确。我认为它不进行缓冲,而是逐行写入磁盘。我指定文件名的方式是 -e 。问题是,我是否可以尝试让它写入 RAM 并在应用程序完成时将其移动到磁盘?
实际上我想要一些像 /dev/null 的东西,但我可以从那里收集输出
答案1
有一点解决方法可能会提高性能 - 您可以创建一个 ramdisk 并让它将其输出发送到那里。网上有很多操作指南,但这里有一个:
答案2
除非应用程序明确要求同步行为,否则大多数文件系统都会缓冲写入。例如,ext2 文件系统将等待最多 30 秒,然后再将写入刷新到磁盘。因此,即使像您怀疑的那样糟糕的代码也不会导致性能显著下降。
您可以尝试使用async
mount 选项来改变文件系统的行为:
async All I/O to the filesystem should be done asynchronously.
另一种方法是使用命名管道。这将为您提供在内存中缓冲输出的所有灵活性。