天天看点

分支优化选择——likely()、unlikely()

分支优化选择

对于条件选择语句,gcc内建了一条指令用于优化,在一个条件经常出现,或者该条件很少出现的时候,编译器可以根据这条指令对条件分支选择进行优化。内核把这条指令封装成了宏,比如likely()和unlikely()。

使用示例:

先存在如下条件选择语句:
if(error){
	.....
}

如果这个标记大多数为0,可以使用unlikely(error)
if(unlikely(error)){
	......
}

如果,分支条件大多数为满足时,可以使用likely(success)
if(likely(success)){
	......
}
           

【注】在使用之前,一定要清楚是不是存在一个在绝大多数情况下都会成立的条件。如果,判断正确,这个条件占压倒性的优势,性能会得到提升;如果搞错了,性能反而会下降。