命令记不住

登陆

defer 性能优化

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语句需要谨慎