| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 346 人关注过本帖
标题:关于内联函数
只看楼主 加入收藏
全世界安静
Rank: 2
等 级:论坛游民
帖 子:104
专家分:65
注 册:2012-6-4
结帖率:31.58%
收藏
已结贴  问题点数:10 回复次数:2 
关于内联函数
使用小的内联函数在代码速度和大小上可以取得折衷,其他情况下取决于程序员是追求代码速度,还是追求代码的规模。
请问这段话应该怎么理解?感谢!
搜索更多相关主题的帖子: 程序员 
2012-07-02 13:53
lxqlyld
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:116
专家分:125
注 册:2012-6-18
收藏
得分:5 
兄弟是新手,也不是太懂,但内联函数编译器在编译时对函数进行处理,非内联函数编译器在运行时进行处理,所以内联函数可以提高代码速度
2012-07-03 13:53
jiantiewen
Rank: 5Rank: 5
等 级:职业侠客
威 望:2
帖 子:61
专家分:307
注 册:2012-6-22
收藏
得分:5 
内联函数在编译好后进行链接时,相当于直接把内联函数内的语句写到调用内联函数的地方。跟宏有点相似。准确地说,一般的函数,程序运行后,指令调进内存后,这一个函数就固定在内存的某个位置上,程序中多次调用这个函数时,cpu就跳转到函数的同一个内存开始位置执行指令,而且跳转前cpu要先把当前运行的临时数据入栈保存,还把调用函数返回后的下一个指令的执行位置入栈,而函数返回后,cpu又要从堆栈取出跟着要继续执行的指令的位置,还有之前使用的临时数据也得出栈继续使用。所以多次返复调用函数时,cpu就用去很多的时间多次返复地进行入栈、出栈的动作,而这些动作有时有些步骤是完全无须执行也不会cpu正常运行程序的,如一些简单的算术运算、逻辑运算、赋值等。而内联函数在内存中是不存在的,因为它已经不是一个函数,而是成为一组指令插入到调用它的地方。cpu运行时无须跳转执行位置,也无须为了让出内部寄存器来保存临时数据,直接分配新的临时数据空间。同时也因为这个原因,执行内容的指令会重复出现在内存中的多个位置,所以程序就会大些,但运行速度会快些。至于如何取舍,就看实际需要吧。还得提醒一下,即使你把函数定义为内联函数,它也不一定就是内联的,编译器的代码优化参数能影响到它的编译结果。据说VC中debug模式的默认配置项会使所有内联函数视为一般函数来进行编译处理。
2012-07-04 01:57
快速回复:关于内联函数
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.011780 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved