C++(19):内联(inline)函数
目录
一、核心概念
二、内联函数的作用
三、代码示例:对比普通函数与内联函数
1. 普通函数调用(存在额外开销)
2. 内联函数(消除调用开销)
四、内联函数的限制与注意事项
五、实际性能测试对比
六、何时使用内联函数?
一、核心概念
内联函数是 C++ 中一种 优化高频调用的小型函数 的机制。其核心思想是 在编译阶段将函数体直接替换到调用处(指建议编译器编译时将某个函数在调用处直接展开),避免传统函数调用产生的额外开销,从而提升性能。
问题背景:函数调用的开销
当一个函数被调用时,系统需要完成以下操作:
-
参数压栈:将实参值或地址压入栈。
-
跳转指令:保存当前指令地址,跳转到函数入口。
-
栈帧管理:为函数分配栈空间(局部变量、返回地址等)。
-
返回值处理:将返回值传递回调用方。
-
栈帧销毁:函数返回后释放栈空间。
问题:如果函数功能非常简单(如仅一行代码),但被高频调用(如循环中调用数万次),调用开销可能远超函数实际执行时间,导致性能浪费。
二、内联函数的作用
通过 inline
关键字建议编译器将函数体直接嵌入调用处,避免上述调用开销:
消除调用成本,省去压栈、跳转、栈帧管理等步骤;代码连续执行,提高 CPU 指令缓存命中率;适合简单、高频调用的函数。