for(int i = 0; i < my_function(MY_CONSTANT); ++i){
//code using i
}
在这个例子中,my_function(MY_CONSTANT)
会在每次迭代时被评估,还是会被自动存储?这取决于使用的优化标志吗?
最佳答案
它必须就像每次调用该函数一样工作。
但是,如果编译器能够证明函数每次的结果都是相同的,它就可以在“好像”规则下进行优化。
例如这通常发生在调用标准容器的 .end()
时。
一般建议:当不确定是否对一段代码进行微优化时,
- 不要这样做。
- 如果您仍在考虑这样做,请衡量。
- 嗯,还有第三点,但我忘了,也许是,还是等等。
换句话说,根据当时代码的清晰程度来决定是否使用变量,而不是根据想象的性能。
关于c++ - for 循环条件中常量的评估,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26362925/