gpt4 book ai didi

c++ - 用 C 和 C++ 最快的输出到文件

转载 作者:可可西里 更新时间:2023-11-01 18:35:54 24 4
gpt4 key购买 nike

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

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

我使用 C++ 和 Java 做了很多关于素数生成和数学算法优化的工作,这有时对我来说是最大的阻碍 - 我有时需要快速地将大量内容移动到文件中。

请原谅我是否已经回答了这个问题,但我已经在谷歌和 SO 上寻找了一段时间但无济于事。

我不希望有人做基准测试的工作 - 但有几种方法可以归档,我怀疑我是否了解所有方法。

总结一下,

C、C++输出到文件的方式有哪些?

哪些是更快的?

显然,从控制台重定向很糟糕。printfcoutfputc 等的任何简要比较都会有所帮助。

编辑:

来自评论,

有一个很好的 cout 和 printf 基线测试: mixing cout and printf for faster output

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

编辑 2:

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

临时存储在这里非常有用——据我所知,您不能轻易缓冲千兆字节的数据。

最佳答案

fwritefprintf 等函数实际上是在执行write 系统调用。与 write 的唯一区别是这些函数使用缓冲区来减少系统调用的次数。

所以,如果我需要在 fwritefprintfwrite 之间做出选择,我会避免使用 fprintf,因为这是一个很好但很复杂的函数,可以做很多事情。如果我真的需要快速的东西,我会自己重新实现格式化部分到最低要求。在fwritewrite之间,如果我需要写很多小数据,我会选择fwrite,否则选择write 可能会更快,因为它不需要整个缓冲系统。

关于c++ - 用 C 和 C++ 最快的输出到文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19983148/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com