【问题标题】:In C should I use unbuffered IO if I am only going to call write once?如果我只想调用一次写入,我应该在 C 中使用无缓冲 IO 吗?
【发布时间】:2022-01-07 05:50:43
【问题描述】:

缓冲 IO 累积来自多个写入的字节,以便一次写入。无缓冲立即将字节写入磁盘。由于写入磁盘很慢,当发出多个小写调用时,缓冲区会显着提高性能,但如果只发出一个写调用,我应该使用无缓冲的吗?

【问题讨论】:

    标签: c io buffer


    【解决方案1】:

    如果只发出一个写入调用,我应该使用无缓冲吗?

    您应该使用适合您目的的高效算法编写清晰的代码,尽可能简单。您不应该花费精力或额外的代码行来控制诸如 I/O 缓冲之类的细节,除非有明显而重大的胜利,无论是从对代码的推理还是从对其行为的实际测量中。只要速度足够快,那么拥有易于理解和维护的代码就比拥有绝对最快的代码重要得多。


    话虽如此,缓冲不会为单次写入提供性能优势。事实上,在这种情况下,缓冲的成本可能更高。

    但是,与实际 I/O 的成本相比,每次写入的额外成本将非常小。您不太可能在缓冲和一次性写入的情况下看到可测量的性能差异,因此即使您实际上是在对性能问题进行故障排除,也不太可能在此查看。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-09-29
      • 1970-01-01
      • 2020-03-25
      • 1970-01-01
      • 2021-10-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多