哪些代码运行得更快

Ske*_*ith 5 c++ optimization

我最近开始考虑优化,现在我知道有很多书籍和文章,但我有一个我感兴趣的特殊场景.

一个.

for (i = 0; i < limit + 5; i++)
  cout << test;
Run Code Online (Sandbox Code Playgroud)

B.

limit2 = limit +5;
for (i = 0; i < limit2; i++)
  cout << test;
Run Code Online (Sandbox Code Playgroud)

我想知道的是第二段代码运行得更快,因为它只需要进行一次数学计算,或者是在循环的生命周期内存储的计算.

Joh*_*ell 11

假设类型很简单,就像在int等等,如果任何体面的编译器没有在发布版本中将两个示例优化为相同的代码,我会感到非常惊讶.例如,复杂类型可能需要在过载时需要更多的马力operator++.


Bo *_*son 5

没有任何区别.

你不应该在这里打扰,因为cout << test无论如何都会使用99%的时间.

您可以对代码执行几乎所有简单的转换,编译器也可以执行.还有一些!

相信你的编译器(tm)!


Lum*_*mpN 5

在这两种情况下,您的编译器可能会生成相同的机器级指令.不要打扰.


Whi*_*g34 3

您所关注的优化几乎肯定无关紧要,无论它是如何编译的。专注于选择正确的算法并为其余代码进行设计。进行分析以找出速度慢的部分并优化花费最多时间的区域。通常 10% 的代码需要 90% 的时间。您当前正在考虑 90% 的代码中的一小部分,除了空循环块之外,在几乎所有可能的情况下,其花费的时间远少于 10%。

  • 它不会引人注目,更喜欢您的编码风格。即使它在技术上更快,但在极少数情况下您实际上需要关心性能。相反,优化可读性。 (2认同)