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

谢谢。

最佳答案

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

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

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

无论如何,使用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++ does printing to terminal significantly slow down code?
  • Printing to the console vs writing to a file (speed)
  • Writing to standard out vs writing to file
  • 关于c++ - 使用重定向在C++中打印到文件是否比使用对流cout更快?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28188318/

    10-11 22:40
    查看更多