09.slowpath和fastpath
在日常阅读OC源码的过程中经常会遇到这两个宏定义。它是什么意思呢?
其中的 __builtin_expect
指令是由 gcc
引入的
目的:编译器可以对代码进行优化,以减少指令跳转带来的性能下降。即性能优化
作用:允许程序员将最有可能执行的分支告诉编译器。
指令的写法为:
__builtin_expect(EXP, N)
。表示 EXP==N的概率很大。fastpath
定义中__builtin_expect((x),1)
表示 x 的值为真的可能性更大;即 执行if 里面语句的机会更大slowpath
定义中的__builtin_expect((x),0)
表示 x 的值为假的可能性更大。即执行 else 里面语句的机会更大在日常的开发中,也可以通过设置来优化编译器,达到性能优化的目的,设置的路径为:
Build Setting
-->Optimization Level
-->Debug
-->将None 改为 fastest 或者 smallest
Last updated