__builtin_expect

__builtin_expect(EXP, N)。意思是:EXP==N的概率很大

这个指令是gcc引入的,作用是"允许程序员将最有可能执行的分支告诉编译器";

GCD中

#define fastpath(x) ((typeof(x))__builtin_expect((long)(x), ~0l))

#define slowpath(x) ((typeof(x))__builtin_expect((long)(x), 0l))

fastpath说明条件很可能为真;

slowpath说明条件很可能为假;

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

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

likely说明条件很可能为真;

unlikely说明条件很可能为假;

CPU会根据__builtin_expect指令优化,尽最大可能的减少跳转指令的发生。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容