我长时间使用C++编程。 我一直在想哪个执行速度更快,printf
还是cout
?
情况:我正在使用C++设计应用程序,有一些限制,例如执行时间限制。 我的应用程序在控制台上有许多打印命令。 那么哪个更适合,printf
还是cout
?
我长时间使用C++编程。 我一直在想哪个执行速度更快,printf
还是cout
?
情况:我正在使用C++设计应用程序,有一些限制,例如执行时间限制。 我的应用程序在控制台上有许多打印命令。 那么哪个更适合,printf
还是cout
?
cpp.sh/94qoj
链接可能已过期。#include <iostream>
#include <string>
#include <ctime>
#include <stdio.h>
using namespace std;
int main()
{
clock_t one;
clock_t two;
clock_t averagePrintf;
clock_t averageCout;
clock_t averagedumbHybrid;
for (int j = 0; j < 100; j++) {
one = clock();
for (int d = 0; d < 20; d++) {
printf("helloperson;");
printf("\n");
}
two = clock();
averagePrintf += two-one;
one = clock();
for (int d = 0; d < 20; d++) {
cout << "helloperson;";
cout << endl;
}
two = clock();
averageCout += two-one;
one = clock();
for (int d = 0; d < 20; d++) {
cout << "helloperson;";
cout << "\n";
}
two = clock();
averagedumbHybrid += two-one;
}
averagePrintf /= 100;
averageCout /= 100;
averagedumbHybrid /= 100;
cout << "printf took " << averagePrintf << endl;
cout << "cout took " << averageCout << endl;
cout << "hybrid took " << averagedumbHybrid << endl;
}
是的,我确实使用了“愚蠢”的词。我最初是为自己制作的,认为结果很疯狂,所以我搜索了一下,最终发布了我的代码。
希望这能有所帮助, Ndrewffght
在底层,它们将使用相同的代码,因此速度差异不会有影响。
如果您只在Windows上运行,则非标准cprintf()可能更快,因为它绕过了许多流操作。
然而,这是一个奇怪的要求。没有人能那么快阅读输出。为什么不把输出写入文件,然后用户可以随意浏览文件呢?
个人经验:
我曾经设计过一个使用ostream运算符的日志类 - 实现非常缓慢(对于大量数据)。
我没有进行太多分析,所以这可能是由于未正确使用输出流,或者仅仅是由于记录到磁盘的数据量过大造成的。(由于性能问题,该类已被废弃,在实践中更喜欢printf / fmtmsg风格。)
我同意其他回复的观点,在大多数情况下,这并不重要。如果输出确实是一个问题,您应该考虑避免/延迟它的方法,因为实际的显示更新通常比正确实现的字符串构建成本更高。数千行在毫秒内滚动并不是很有信息量。
你不应该问这个问题,因为用户只能比它们阅读得更慢。
如果你需要快速执行,请不要使用它们。
正如其他人所提到的,如果你需要记录操作,可以使用某种日志记录。