内联函数(inline function)
inline
使用 inline 修饰函数的声明或者实现,可以使其变为联函数
- 当函数被声明为内联函数之后, 编译器会将其内联展开, 而不是按通常的函数调用机制进行调用
特点
优点
- 编译器会将函数调用直接展开为函数体代码
- 可以减少函数调用的开销
- 对于存取函数以及其它函数体比较短, 性能关键的函数, 建议使用内联.
- 所以可以认为是 空间换时间思想的体现
缺点
- 会增加代码体积
注意
- 尽量不要内联超过 10 行代码的函数
- 有些函数即使声明为 inline. 也不一定会被编译器内联,比如递归函数
内联函数与宏定义
- 内敛函数和宏,都可以减少函数调用的开销
- 对比宏,内敛函数多了语法检测和函数的特性
iOS中 inline 函数的使用
CG_INLINE
CG_INLINE CGRect
CGRectMake(CGFloat x, CGFloat y, CGFloat width, CGFloat height)
{
CGRect rect;
rect.origin.x = x; rect.origin.y = y;
rect.size.width = width; rect.size.height = height;
return rect;
}
// 这会使编译器为内联函数创建代码。而不是在堆栈上创建一个函数调用