水木社区手机版
首页
|版面-C程序设计语言(CProgramming)|
新版wap站已上线
返回
1/1
|
转到
主题:函数嵌套调用很多层的话,会不会导致程序运行慢?
4楼
|
ylh1969
|
2020-12-23 19:51:18
|
展开
【 在 il15 的大作中提到: 】
: 一个编译器程序有很多component, 每个component都通过统一的接口去调用别的component的对应函数,导致函数嵌套很深(稍微复杂点的目标文件一般都能到超过70层),这样会不会导致程序由于经常分配和释放堆栈而速度慢(我不清楚这里面的机制)?
: 如果是的话,gcc有什么编译选项能够优化这种情况吗?
有影响。
某些情况用inline函数会好些。
--
FROM 221.221.51.*
5楼
|
ylh1969
|
2021-11-09 20:34:30
|
展开
原来我也认为调用开销无所谓。
直到一次测试STL的map。把一个调用优化成直接代码展开(inline)。结果性能差异巨大。
【 在 z16166 的大作中提到: 】
: 分配/释放栈,主要是编译期间由编译器来计算,在运行时的开销是比较小的。
: 运行时分配、释放栈,只是一个栈帧寄存器的加减操作,
: 主要开销在函数参数的压栈上,出栈也基本就一条指令。
: ...................
--
FROM 221.221.51.*
1/1
|
转到
选择讨论区
首页
|
分区
|
热推
BYR-Team
©
2010.
KBS Dev-Team
©
2011
登录完整版