C++ 通过插入运算符执行写操作时,使用std::stringbuf进行缓冲的效果'<<';

C++ 通过插入运算符执行写操作时,使用std::stringbuf进行缓冲的效果'<<';,c++,performance,buffer,fstream,C++,Performance,Buffer,Fstream,我试图在对文件执行写操作时,对手动缓冲(通过std::stringbuf)对运行时间的影响进行基准测试,而不是由插入操作符执行缓冲操作。它不是“只执行一次写操作”;您没有考虑构建该字符串的成本,它不是零 您可能会发现一个缓冲区.reserve(100000000*strlen(“Hello world!\n”))有点帮助。它不是“只执行一次写入操作”;您没有考虑构建该字符串的成本,它不是零 您可能会发现一个缓冲区.reserve(100000000*strlen(“Hello world!\n”

我试图在对文件执行写操作时,对手动缓冲(通过std::stringbuf)对运行时间的影响进行基准测试,而不是由插入操作符执行缓冲操作。它不是“只执行一次写操作”;您没有考虑构建该字符串的成本,它不是零

您可能会发现一个
缓冲区.reserve(100000000*strlen(“Hello world!\n”))
有点帮助。

它不是“只执行一次写入操作”;您没有考虑构建该字符串的成本,它不是零

您可能会发现一个
缓冲区.reserve(100000000*strlen(“Hello world!\n”))
会有一些帮助

std::ofstream ofs;
ofs.open("output_file", std::ios::out);

for (int i = 0; i < 100000000; i++)
  ofs << "Hello world!\n";
std::string buffer;
std::ofstream ofs;
ofs.open("output_file", std::ios::out);

for (int i = 0; i < 100000000; i++)
  buffer.append("Hello world!\n");

ofs << buffer;