C / C++ 中最快的文件输出方式是什么?
我在使用C++和Java进行质数生成和数学算法优化方面做了很多工作,而这是我有时候遇到的最大障碍 - 我有时候需要快速地将很多数据移动到一个文件中。
如果这个问题已经有答案,请原谅我,但我已经在Google和SO上寻找了一段时间,但没有结果。
我不指望有人来做基准测试的工作 - 但有几种方法可以向文件写入数据,而我怀疑我并不知道全部。
所以总结一下,
在C和C++中有哪些输出到文件的方式?
这其中哪些是更快的?
显然从控制台重定向非常糟糕。
任何有关printf
、cout
、fputc
等的简短比较都会有所帮助。
编辑:
根据评论中的内容,
在混合使用cout和printf实现更快的输出中有对cout和printf进行的优化基准测试。
这是一个很好的起点,但并不是我问的最好的答案。 例如,它没有处理评论中提到的std::ostreambuf_iterator<>,如果可能的话。它也没有处理fputc或者提及控制台重定向(相比之下有多糟糕)(不需要提到)。
编辑2:
此外,为了证明我的历史情况,您可以假设几乎无限量的数据输出(程序在较新的Intel i7上运行数天,产生几千兆字节的文本)。
临时存储在这里只能帮助一点 - 我意识到你不能轻松地缓存几千兆字节的数据。
ostream::write
或fwrite()
)从缓冲区向文件写入。这应该可以提高性能,无论使用哪种语言。其他微调,如直接写入硬盘,可能没有那么大的影响。 - Thomas Matthews