分支优化选择
对于条件选择语句,gcc内建了一条指令用于优化,在一个条件经常出现,或者该条件很少出现的时候,编译器可以根据这条指令对条件分支选择进行优化。内核把这条指令封装成了宏,比如likely()和unlikely()。
使用示例:
先存在如下条件选择语句:
if(error){
.....
}
如果这个标记大多数为0,可以使用unlikely(error)
if(unlikely(error)){
......
}
如果,分支条件大多数为满足时,可以使用likely(success)
if(likely(success)){
......
}
【注】在使用之前,一定要清楚是不是存在一个在绝大多数情况下都会成立的条件。如果,判断正确,这个条件占压倒性的优势,性能会得到提升;如果搞错了,性能反而会下降。