inline函数是提高运行时间效率,但却增加了空间开销。
即inline函数目的是:为了提高函数的执行效率(速度)。
非内联函数调用有栈内存创建和释放的开销函数调用是有开销的。。按照网上说的那些 我总结出来一个频繁调用的函数,是不是都应该申请为内联函数 呢?无论那个函数的大小。函数大的时候虽然效果不明显 但是也有好处的,对吧?那实际编程中 很少看到那些大的函数 用内联的。。为什么呢?
即inline函数目的是:为了提高函数的执行效率(速度)。
非内联函数调用有栈内存创建和释放的开销函数调用是有开销的。。按照网上说的那些 我总结出来一个频繁调用的函数,是不是都应该申请为内联函数 呢?无论那个函数的大小。函数大的时候虽然效果不明显 但是也有好处的,对吧?那实际编程中 很少看到那些大的函数 用内联的。。为什么呢?
需要更大的内存空间是只在运行中消耗更多的内存,不是说你的exe变大了
比如
int getSize(){return 1;}
这个函数,很短小,但如果频繁的调用他,你应该知道call子函数.进入和离开堆栈的操作.甚至小于实际代码的操作. 这就是效率低下.而如果
inline int getSize(){return 1;} 这就会编译时,把函数都汇编到里的程序代码段里.而不是通过函数调用. 节约了调用成本. 缺点是大的函数inline,就会把整个代码段都copy到任何调用他的地方.造成代码空间*N次调用的浪费了. 而非inline函数的话,只有一段代码. 节约空间,浪费时间.看需求优化.
还有就是你的函数是个递归的,那肯定也不会展开了。所以。。楼主明白了?