【发布时间】:2010-12-20 20:29:57
【问题描述】:
我有以下情况
bool user_set_flag;
getFlagFromUser(&user_set_flag);
while(1){
if(user_set_flag){
//do some computation and output
}
//do other computation
}
变量user_set_flag 在代码中只设置一次,也只设置一次,一开始,它本质上是用户选择他想对程序做什么。假设用户选择了user_set_flag = false,那么编译器将编译代码以使if(user_set_flag) 语句只被检查一次,或者总是被检查。我可以给编译器提示,比如将 bool 设置为 const 吗?
我问这个的原因是因为我的应用程序是时间关键的,它处理帧尽可能快。始终为假的分支应该能够在运行时以某种方式确定?
【问题讨论】:
-
我相信除了单个 if 语句之外,您还可以找到其他需要优化的东西。
-
您的问题的答案取决于编译器。编译器不需要对其进行优化。但如果它是一个可以在编译时确定的常量,大多数编译器都会将其优化掉。
-
编译器无法优化掉用户提供的值。那需要一台时光机。
标签: c++ optimization loops