gpt4 book ai didi

c++ - 使用重定向在 C++ 中打印到文件是否比使用对流 cout 更快?

转载 作者:行者123 更新时间:2023-11-30 05:48:25 26 4
gpt4 key购买 nike

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

谢谢。

最佳答案

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

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

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

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

  std::cout << "Test line\n";

快于:

std::cout << "Test line" << std::endl;

因为后者等同于:

std::cout << "Test line\n" << std::flush;

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

一些引用资料:

关于c++ - 使用重定向在 C++ 中打印到文件是否比使用对流 cout 更快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28188318/

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