- 调用普通函数
调用过程有参数压栈,函数栈帧的开销和回退等,存在函数调用的开销。
- inline函数
- 在编译过程中,没有函数调用的开销,在函数的调用点直接把函数的代码进行展开处理
- inline函数不再生成相应的函数符号,而普通函数会生成函数符号,如int sum(int a, int b);会生成sum_int_int的函数符号。
- 并不是所有的inline函数都会被编译器处理成内联函数(如递归)。
- 在debug版本中,inline不起作用,只有在release版本中起作用。
注意:函数被声明为内联函数,只是建议编译器处理成内联函数,是否处理成内联函数由编译器决定。