c++ - for 循环条件中常量的评估

标签 c++ loops optimization as-if

for(int i = 0; i < my_function(MY_CONSTANT); ++i){
    //code using i
}

在这个例子中,my_function(MY_CONSTANT) 会在每次迭代时被评估,还是会被自动存储?这取决于使用的优化标志吗?

最佳答案

它必须就像每次调用该函数一样工作。

但是,如果编译器能够证明函数每次的结果都是相同的,它就可以在“好像”规则下进行优化。

例如这通常发生在调用标准容器的 .end() 时。


一般建议:当不确定是否对一段代码进行微优化时,

  1. 不要这样做。
  2. 如果您仍在考虑这样做,请衡量
  3. 嗯,还有第三点,但我忘了,也许是,还是等等。

换句话说,根据当时代码的清晰程度来决定是否使用变量,而不是根据想象的性能。

关于c++ - for 循环条件中常量的评估,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26362925/

相关文章:

c++ - 为什么我不能在我的文本文件中搜索一个词?

vba - Do...循环直到具有多个条件

java - Ruby 和 Java 的速度

mysql - 优化排序查询

algorithm - 队列缩减算法?

c++ - 获取 parent 的类型

c++ - 找不到我的代码 :( 有什么问题

c++ - C++ 的自定义迭代器函数

python - 如何退出循环

c# - 在循环中使用 NEW 时,将项目添加到对象的 LIST<> 会导致重复的对象