首页 新闻 会员 周边 捐助

C++里的inline可以提高执行效率,怎么把握度呢?把很多方法设置为inline好吗?

0
悬赏园豆:30 [已解决问题] 解决于 2012-03-19 09:50

C++里的inline可以提高执行效率,怎么把握度呢?把很多方法设置为inline好吗?

有什么缺点吗?

木头人一号的主页 木头人一号 | 初学一级 | 园豆:11
提问于:2012-03-18 23:59
< >
分享
最佳答案
2
收获园豆:25
zsounder | 老鸟四级 |园豆:2819 | 2012-03-19 09:05
其他回答(1)
1

这涉及一个效率问题。记住,调用函数的开销是很大的,所谓的空间开销是指调用函数前,先要将原来的函数保存在寄存器(占用寄存器空间)里面,并在调用结束后恢复。调用函数时,还要复制实参(占用内存空间)。如果被调用函数一旦调用频繁,就会花费很多空间。如果你有一段“短小而频繁调用的函数”,内联是个不错的选择。

“如果含有复杂的分支或循环结构,我使用inline会有什么后果?”

事实上,所谓内联,是编译器将内联函数在函数调用点上展开函数代码。例如
inline int small(int a,int b) { return a < b ? a : b ; }
cout << small ( a, b ) << endl ;等同于
cout << (a < b ? a : b) << endl; 编译器会将函数调用语句转换为函数代码,再进行编译。inline只是你给编译器提一个建议,希望它将函数内联,至于它会不会执行就不一定了。
基本上复杂的函数它是不会同意的,就算同意了,也只会使你的编译变得更将浪费时间,而执行速度得不到什么提升。还有,一些编译器是不会通过含有递归的内联函数的。
记住,短小而且反复调用的函数进行内联就可以了。

收获园豆:5
tab_china | 园豆:54 (初学一级) | 2012-03-19 08:02
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册