加载中...

内联展开(Inlining)是把函数调用点直接替换为被调函数函数体的优化,形参用实参代入,从而消除调用与返回的开销。
内联的最大收益并非省去 call 指令本身,而是打通过程间的优化边界:被内联后的代码可与调用点上下文一起做常量传播、死代码消除、循环优化,常触发连锁优化。
过度内联导致代码膨胀,增大指令缓存压力,反而拖慢程序。编译器依据函数体大小、调用频度(含 PGO 反馈)等启发式决策;C++ 的 inline 关键字、Rust 的 #[inline] 只是提示。
JIT 编译器(如 HotSpot)可依据运行时类型信息对虚方法做投机性内联,配合去优化机制回退,这是托管语言性能的关键来源之一。

登录 后参与讨论
暂无讨论,来发表第一条评论吧