C ++有没有办法让程序运行得更快?

时间:2015-11-05 23:56:55

标签: c++ performance loops iostream

例如..如果我有。

#include <iostream>
using namespace std;

int main()
{
   int counter = 0;
   while (true)
   {
      cout << counter << endl;
      counter++
   }
}

并且说我在与其他计算机相比计算到10亿的竞争,这个循环的运行速率纯粹取决于计算机处理器的速度吗?或者我的程序运行速度有限制,这可以改变吗?

5 个答案:

答案 0 :(得分:9)

取消endl并改用"\n"。计划至少比单独加速4倍。

将输出写入文件而不是屏幕。这对于另外10倍的速度提升应该是好的(或者更好 - 如果使用SSD则更多)。

答案 1 :(得分:1)

使用printf中的<cstdio>,它比cout快一点。

printf("%d\n", counter);

答案 2 :(得分:0)

您发布的程序的缓慢来自将内部表示格式化为人类可读形式(文本表示)并输出文本表示。

未提及的一个优化是缓冲格式化的输出,然后输出它。例如,将格式化文本写入缓冲区,然后每100个左右计数,使用块写入打印出缓冲区。目标是减少输出事务的数量并使每个事务具有更大量的数据。基本上,1024个字符的一个输出将比1个字符的1024个输出快。

输出取决于操作系统和超出程序控制范围的其他因素。您的程序将数据发送到OS,然后等待操作系统完成请求。完成时间取决于任务优先级和资源可用性(至少)。因此,如果您的程序可以在几毫秒内计算,但I / O需要几秒钟,那么您运气不好,因为没有程序优化会有所帮助。

答案 3 :(得分:0)

如果您使用的是cout,但没有使用库<cstdio>中的任何内容,则可以在int main()函数的开头编写该代码:

    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);

答案 4 :(得分:0)

预增量更快(++计数器而不是计数器++)