
defer性能优化
1.defer特点
- defer定义的延迟函数参数在defer语句中出现时就已经确定好了
- defer定义的顺序与实际的执行顺序相反
- return不是原子操作,执行过程是:保存返回值(若有)-> 执行defer(若有)-> 执行ret跳转
- 申请资源后立即使用defer关闭资源是一个好习惯
2.defer性能优化
根据实现机制不同,可以把defer分为三种类型
- heap-allocated:存储在堆上的defer
- stack-allocated:存储在栈上的defer
- open-coded:开放编码类型的defer
3.堆defer
后续补充
4.栈defer
后续补充
5.开放编码defer
后续补充
(1)禁用编译器优化
后续补充
(2)循环语句
后续补充
(3)限制defer数量
后续补充
6.defer使用规则
- 单个函数中如果存在过的的defer,那么考虑拆分函数
- 单个函数中如果存在过多的return语句,那么需要控制defer的使用数量
- 在循环中使用defer语句需要谨慎