关于Runtime中的宏定义

389 阅读1分钟

将一些在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大概率为假