我的代码中有一个关键循环,具有以下形状:
int myloop(int a, .....){
/* some stuff */
// Critical loop
while(...){
/* Some Stuff */
if(a == 1){
// .....
}
else if(a == 2){
// .....
}
else if(a == 3){
// .....
}
else{
// ....
}
}
}
Run Code Online (Sandbox Code Playgroud)
由于循环从不接触"a"的值,所采用的分支永远不会改变,但由于此循环非常重,因此需要多次测试"a"的值,这是完全没必要的.最好的事情可能是复制循环,以便在循环开始之前可以测试"if",但这意味着复制了两种情况共同的许多东西,并且会导致非常难看的代码......
有没有办法要求GCC/G ++在编译时复制这段代码?或者任何其他技巧,以避免这么多次测试价值?
谢谢您的帮助 !
Nathann