inline函数是提高运行时间效率,但却增加了空间开销。
       即inline函数目的是:为了提高函数的执行效率(速度)。
      非内联函数调用有栈内存创建和释放的开销函数调用是有开销的。。按照网上说的那些 我总结出来一个频繁调用的函数,是不是都应该申请为内联函数 呢?无论那个函数的大小。函数大的时候虽然效果不明显 但是也有好处的,对吧?那实际编程中 很少看到那些大的函数 用内联的。。为什么呢?

解决方案 »

  1.   

    inline函数一般只应该是很小的函数,几行的那种
      

  2.   

    我知道是很小的函数....我的问题是为什么一定要很小的函数呢?大的为什么不行? 大的加inline有啥坏处? 有啥确定?增加空间的开销? 空间 开销的意思是不是EXE文件比较大?这个大一点问题不大吧
      

  3.   

    inline以代码的复制为代价,节省函数调用的开销,来提高函数的执行效率。如果执行函数内部代码的时间要大于函数调度的开销,那么在执行效率上并没有收获。inline函数的调用,均是复制代码。所有将消耗更多的内存空间。内联函数内一般不会有大量代码,那样使用内涵函数就没什么意义了。一般内部不会出现循环语句。
    需要更大的内存空间是只在运行中消耗更多的内存,不是说你的exe变大了
      

  4.   

    这里没理解inline的实际实现啊.
    比如
    int getSize(){return 1;}
    这个函数,很短小,但如果频繁的调用他,你应该知道call子函数.进入和离开堆栈的操作.甚至小于实际代码的操作. 这就是效率低下.而如果
    inline int getSize(){return 1;} 这就会编译时,把函数都汇编到里的程序代码段里.而不是通过函数调用. 节约了调用成本. 缺点是大的函数inline,就会把整个代码段都copy到任何调用他的地方.造成代码空间*N次调用的浪费了. 而非inline函数的话,只有一段代码. 节约空间,浪费时间.看需求优化.
      

  5.   

    inline只是对编译器的一个建议,编译器可以完全不采用这个建议。
      

  6.   

    inline以代码的复制为代价,节省函数调用的开销,来提高函数的执行效率。如果执行函数内部代码的时间要大于函数调度的开销,那么在执行效率上并没有收获。inline函数的调用,均是复制代码。所有将消耗更多的内存空间
      

  7.   

    inline只是对编译器的一个建议,建议在编译是把这个函数展开,如果函数很小,编译器就会展开它,但是如果你的函数很大,比如有个几十行,就不会展开了,就好象你没加inLine一样了,
    还有就是你的函数是个递归的,那肯定也不会展开了。所以。。楼主明白了?
      

  8.   

    inline其实跟宏替换差不多,只不过替换的是函数体。