Optimization 向编译器指示循环条件的相似性

Optimization 向编译器指示循环条件的相似性,optimization,gcc,macros,linux-kernel,Optimization,Gcc,Macros,Linux Kernel,在Linux内核中,有可能的和不可能的宏来指示编译器if条件的预期值。在while循环中有类似的方法吗?在while循环中是否可以使用可能/不可能的宏 是这样的: while(unlikely( /*some boolean check*/)){ ... } 是否具有预期效果?可能和不可能与测试相关。您可以将它们与while和ifs一起使用 您的代码将达到预期效果。您知道关于它的任何参考资料吗?它们将归结为GCC函数\uuuuuu builtin\uexpect。您可以了解这一点。如果/

在Linux内核中,有可能的不可能的宏来指示编译器if条件的预期值。在while循环中有类似的方法吗?在while循环中是否可以使用可能/不可能的宏

是这样的:

while(unlikely( /*some boolean check*/)){
   ...
}

是否具有预期效果?

可能和不可能与测试相关。您可以将它们与while和ifs一起使用


您的代码将达到预期效果。

您知道关于它的任何参考资料吗?它们将归结为GCC函数
\uuuuuu builtin\uexpect
。您可以了解这一点。如果
/*一些布尔检查*/
不太可能,这意味着
循环的迭代次数很可能为0。这就是你的意图吗?通常一个循环会自动告诉编译器可能出现的情况。@MikeDunlavey是的,这是我的意图。我的例子是一个while循环,如果数字太大,它会右移位以减少有效位,我认为这是一种不常见的情况。这是有道理的。我想我会研究生成的asm。如果它不是你想要的,也许在循环中加入一个If语句可以说服它。