首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Windows和OSX对of流控制台输出性能的影响?

Windows和OSX对of流控制台输出性能的影响?
EN

Stack Overflow用户
提问于 2013-07-23 17:51:40
回答 2查看 1.9K关注 0票数 4

给定以下非常简单的for循环:

代码语言:javascript
运行
复制
int main (void) {
    for (int i = 0 ; i < 1000000; i++) {
         std::cout<<i<<std::endl;
    }
}

使用2012在干净的Windows 8专业版上运行此代码,每100 k打印大约需要15秒。

在mac x上,使用同一台计算机,xcode只需3秒就能输出1条生产线。

我几乎100%肯定它与性能无关,它只是一些与输出机制或其他相关的东西。

有人能确认一下吗..?只是想知道我的窗户和视觉工作室都很好。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-07-23 17:58:16

std::endl冲线。这样做是相当昂贵的。

试着做:

代码语言:javascript
运行
复制
std::cout << i << '\n';

在大多数其他通常的交互式I/O场景中,std::endl与std::cout一起使用时是多余的,因为来自std::cin的任何输入、输出到std::cerr或程序终止都会强制调用std::cout.flush()。 使用std::endl代替'\n',在某些来源的鼓励下,可能会显著降低输出性能。

来源

编辑:输出操作成本很高,取决于外部因素。这就是为什么这里速度慢的原因。例如,正在使用的终端应用程序可能是导致某些性能问题的因素。

通过将输出重定向到/dev/null/,可以避免这种情况:

代码语言:javascript
运行
复制
./a.out > /dev/null

关于输出性能,您可以阅读以下内容:http://codeforces.com/blog/entry/5217

票数 2
EN

Stack Overflow用户

发布于 2013-07-23 18:15:06

请注意,就我而言,这是更多的猜测,但仍然是:

我怀疑的是差别(顺便说一下)。Windows / OSX) ),在总体运行时,您的小测试程序与相应编译器生成的代码没有任何关系。

根据我在windows上输出控制台的经验,我强烈怀疑这里的“瓶颈”是将您的程序中的字符数据铲到Windows和显示它的cmd.exe。

可以简单地说,OSX上的控制台/shell/bash接受程序输出的速度比Windows控制台快得多。

您可以尝试的是将此程序的输出重定向到一个文件(在CLI test.exe > output.txt上启动时使用重定向),并查看是否以这种方式测量任何差异。

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

https://stackoverflow.com/questions/17817456

复制
相关文章

相似问题

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