首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在C++中使用重定向打印到文件是否比使用传统cout更快?

在C++中使用重定向打印到文件是否比使用传统cout更快?
EN

Stack Overflow用户
提问于 2015-01-28 17:09:03
回答 1查看 251关注 0票数 1

我正在编写一种代码,它可以执行约瑟夫的排列。我注意到,当我使用重定向时,它比使用coutprintf时更快。请我想知道任何有经验的人,哪一个通常是更快,因为我最关心的是代码的性能和时间。

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2015-01-28 17:57:03

这取决于您的操作系统和您的平台的C和C++ I/O库实现(...以及cpu负载、服务、进程、RAM...)。

在Windows上,写入控制台是一个巨大的瓶颈。通常在Linux / MacOS (例如Performance difference of iostream console output between Windows and OSX?)上运行会更快。

如果使用与cout不同的缓冲方案,则直接写入ofstream可以提高性能(这种情况经常发生)。

无论如何,使用streams,您可以使用'\n'而不是std::endl显着提高打印速度

代码语言:javascript
复制
  std::cout << "Test line\n";

比:

代码语言:javascript
复制
std::cout << "Test line" << std::endl;

因为后者等同于:

代码语言:javascript
复制
std::cout << "Test line\n" << std::flush;

(有关详细信息,请参阅C++: "std::endl" vs "\n" )。

一些参考资料:

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28188318

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档