我正在帮助某人解决有关在 C 中输出的问题,但我无法回答这个看似简单的问题,我想使用答案(在我的答案中),即:
在 C/C++ 中输出到文件的最快方法是什么?
我使用 C++ 和 Java 在素数生成和数学算法优化方面做了很多工作,这有时对我来说是最大的阻碍——我有时需要快速将很多内容移动到文件中。
如果这已得到回答,请原谅我,但我一直在寻找谷歌和 SO 一段时间无济于事。
我不指望有人做基准测试工作——但有几种方法可以提交文件,我怀疑我都知道。
所以总结一下,
有哪些方法可以输出到 C 和 C++ 中的文件?
其中哪一个是/是更快的?
显然从控制台重定向是可怕的。printf
、cout
、等的任何简短比较fputc
都会有所帮助。
编辑:
从评论来看,
有一个很好的 cout 和 printf 基线测试: 混合 cout 和 printf 以获得更快的输出
这是一个很好的开始,但不是我所要求的最佳答案。例如,如果有可能,它不会处理评论中提到的 std::ostreambuf_iterator<> 。它也没有处理 fputc 或提到控制台重定向(相比之下有多糟糕)(不是它需要)
编辑2:
此外,为了论证我的历史案例,您可以假设输出的数据量几乎是无限的(程序实际上在较新的 Intel i7 上运行了几天,产生了千兆字节的文本)
临时存储在这里非常有用——我知道你不能轻易缓冲千兆字节的数据。