c++ - 缓冲区刷新: "\n"与 std::endl

标签 c++ optimization

<分区>

Possible Duplicate:
C++: “std::endl” vs “\n”

Accelerated C++ 中,提到了两件事:

  1. 大多数系统都需要花费大量时间将字符写入输出设备。因此,C++ 将要写入的字符累积到缓冲区中,并等待缓冲区被刷新。

  2. 可以刷新缓冲区的一种方法是,如果我们使用 std::endl 明确告诉它这样做。

这让我想知道:显然,除了最大的输出之外,所有的好处都非常并且不明显,但是使用 "\n" 比使用 std::endl,或者 "\n" 是否也刷新缓冲区?

最佳答案

使用 '\n' 不会刷新缓冲区,而且确实比使用 std::endl 更快。

在典型的 I/O 中,输出在写入目标设备之前会被缓冲。这样,当写入访问速度较慢的设备(如文件)时,它不必在每个字符后访问设备。刷新会将缓冲区“刷新”到设备上,从而导致一定的性能开销。

-改编自:C++ - endl and flushing the buffer

关于c++ - 缓冲区刷新: "\n"与 std::endl,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9651311/

相关文章:

c++ - 给定 vector 和角度的 Ogre 相机方向

GCC 中的 C++14 支持是实验性的

C++ - 在打印 char* 时指定 std::cout 的最大字符数

python - 在 PyTorch 中快速计算模型参数的 Hessian 矩阵

android - ios低级序列化

c# - C# 的常见操作成本?

c++ - c++中模板的部分特化

c++ - 简单 boost 序列化中的未定义引用错误

java - 查找给定字符串排列的优化算法?

algorithm - 如何优化这个 Haskell 代码在亚线性时间内总结素数?