linux kernel function

本文大部分内容参考互联网相关信息。

likely(a), unlikely(b) :告诉编译器,a很有可能是真的,b很有可能是假的,以提高效率。

定义如下

#define likely(x) __builtin_expect(!!(x), 1)
#define unlikely(x) __builtin_expect(!!(x), 0)

例子:if(likely(something)){}或是if(unlikely(something))

使用likely,执行if后面语句的可能性大些,编译器将if{}里的内容编译到前面, 使用unlikely,执行else后面语句的可能性大些,编译器将else{}里的内容编译到前面。这样有利于cpu预取,提高预取指令的正确率,因而可提高效率。

posted @ 2012-11-24 12:04  勒达与天鹅  阅读(240)  评论(0编辑  收藏  举报