【发布时间】:2022-01-07 05:50:43
【问题描述】:
缓冲 IO 累积来自多个写入的字节,以便一次写入。无缓冲立即将字节写入磁盘。由于写入磁盘很慢,当发出多个小写调用时,缓冲区会显着提高性能,但如果只发出一个写调用,我应该使用无缓冲的吗?
【问题讨论】:
缓冲 IO 累积来自多个写入的字节,以便一次写入。无缓冲立即将字节写入磁盘。由于写入磁盘很慢,当发出多个小写调用时,缓冲区会显着提高性能,但如果只发出一个写调用,我应该使用无缓冲的吗?
【问题讨论】:
如果只发出一个写入调用,我应该使用无缓冲吗?
您应该使用适合您目的的高效算法编写清晰的代码,尽可能简单。您不应该花费精力或额外的代码行来控制诸如 I/O 缓冲之类的细节,除非有明显而重大的胜利,无论是从对代码的推理还是从对其行为的实际测量中。只要速度足够快,那么拥有易于理解和维护的代码就比拥有绝对最快的代码重要得多。
话虽如此,缓冲不会为单次写入提供性能优势。事实上,在这种情况下,缓冲的成本可能更高。
但是,与实际 I/O 的成本相比,每次写入的额外成本将非常小。您不太可能在缓冲和一次性写入的情况下看到可测量的性能差异,因此即使您实际上是在对性能问题进行故障排除,也不太可能在此查看。
【讨论】: