【golang】性能优化

dongzaidong ·
我觉得不是用不用new 的问题。而是什么情况下用值,什么情况下用指针。用new 创建返回的是对象指针,而object{}是对象本身 1. 用new 创建对象效果等同&object{}。用new创建会比&object{},因为会自动内存对齐 2. 不是所有的指针都会分配在heap上,这是编译器进行逃逸分析决定的。在四种情况下变量会分配在heap上:1 )指针逃逸 2)栈空间不足逃逸, 所以即使是对象object{},如果过大也会分配在heap上 3)动态类型逃逸 4)闭包引用对象逃逸 3. 如果对象结构较为复杂,那么值复制时花的时间会比较长,即使分配在stack上,所花的时间也不一定比用指针短。所以什么时候用指针什么时候用值,是需要判断的。
#1