将一些在Runtime中经常用到的宏做一下总结。
1. slowpath/fastpath
在runtime源码中可以很快的找到这两个宏的定义
#define fastpath(x) (__builtin_expect(bool(x), 1))
#define slowpath(x) (__builtin_expect(bool(x), 0))
但是 __builtin_expect
这个宏却找不到相关的定义,因为它的定义是在 gcc
中,允许程序员将最有可能执行的分支告诉编译器,优化编译速度
__builtin_expect(EXP, N)
意思是:EXP == N
的概率很大。
那么,可以总结一下
fastpath表示x == 1的概率很大,表示x大概率为真
slowpath表示x == 0的概率很大,表示x大概率为假