CG_INLINE,inline 内联函数

内联函数,即在编译的时候将函数体替换函数调用,从而不需要将parameter,return address进行push/pop stack的操作,从而加速app的运行,然而,会增加二进制文件的大小。

比如,再源码中:

  1. inline int foo(int a, int b)
  2. {
  3. return a + b;
  4. }
  5. void bar(int a, int b)
  6. {
  7. NSLog(@"%d", foo(a, b));
  8. }

编译过后成为:

  1. void bar(int a, int b)
  2. {
  3. NSLog(@"%d", a + b);
  4. }

问:内联函数和非内联函数有很大不同吗?

答:对硬件硬性不大,但在性能上有影响。

内联函数不能保证编译时候一定是内联的,内联仅仅是告诉编译器请求内联,但编译器不一定内联,比如再调用虚函数,递归(recursion),比如:

  1. inline int aplusb_pow2(int a, int b) {
  2. return (a + b)*(a + b) ;
  3. }
  4. for(int a = 0; a <</span> 900000; ++a)
  5. for(int b = 0; b <</span> 900000; ++b)
  6. aplusb_pow2(a, b);
上一篇:inline 内联函数


下一篇:inline内联函数