c和c ++中最快的文件输出

Pla*_*rob 7 c c++ io file-io

我正在帮助某人提出有关在C中输出的问题,而我无法回答这个看似简单的问题我想用答案(在我的回答中),即:

在C/C++中输出文件的最快方法是什么?

我使用C++和Java完成了素数生成和数学算法优化的大量工作,这对我来说有时是最大的劫持 - 我有时需要移动很多文件并且速度很快.

请原谅我,如果这已经得到回答,但我一直在寻找google和SO一段时间无济于事.

我不希望有人做基准测试的工作 - 但有几种方法可以存档,我怀疑我知道这一切.

总结一下,

有什么方法可以用C和C++输出到文件?

哪些是更快的?

显然从控制台重定向是非常糟糕的.任何简单的比较printf,cout,fputc,等会有所帮助.

编辑:

从评论中,

cout和printf有一个很好的基线测试: 混合cout和printf以获得更快的输出

这是一个很好的开始,但不是我要问的最佳答案.例如,它不处理评论中提到的std :: ostreambuf_iterator <>,如果这是可能的话.它也不处理fputc或提到控制台重定向(相比之下有多糟糕)(不是它需要)

编辑2:

此外,为了争论我的历史案例,你可以假设输出几乎无限量的数据(程序在较新的英特尔i7上运行数天,产生千兆字节的文本)

临时存储在这里只是非常有用 - 你不能轻易地缓冲千兆字节的数据.

aj.*_*lan 1

cout 实际上比 printf 稍快,因为它是模板函数,因此程序集是针对所使用的类型进行预编译的,尽管速度差异可以忽略不计。我认为真正的瓶颈不是语言发出的调用,而是硬盘的写入速率。如果您确实想一直这样做,您可以创建一个多线程或网络解决方案,将数据存储在缓冲区中,然后将数据缓慢写入硬盘驱动器,与数据处理分开。

  • 它们需要更多的时间来编译,但一旦编译完成,就只是汇编了。http://stackoverflow.com/questions/2442358/do-c-templates-make-programs-slow (2认同)