zoukankan      html  css  js  c++  java
  • 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.   
    6. void bar(int a, int b)  
    7. {  
    8.    NSLog(@"%d", foo(a, b));  
    9. }  


    编译过后成为:

    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.   
    5. for(int a = 0; a <</span> 900000; ++a)  
    6.     for(int b = 0; b <</span> 900000; ++b)  
    7.         aplusb_pow2(a, b);  
  • 相关阅读:
    命令模式
    装饰模式 decorator
    儒道佛
    Facade模式
    Adapter
    TListView ItemCheck CheckedItems
    观 徼 偶 感
    c# Mid 子窗体 盖住 控件
    pycharm 连接mysql时区问题
    django_drf
  • 原文地址:https://www.cnblogs.com/NSong/p/5623054.html
Copyright © 2011-2022 走看看