【golang】性能优化
2020-04-15 本文已影响0人
dongzd
1.内存管理
在栈中创建对象比在堆中创建对象性能高,少用new来创建对象,多用object{}创建,如果需要创建大量相同临时对象,使用sync.pool减少gc压力。
原因:因为heap上的变量需要gc,而stack上的自动释放,如果在函数里面创建许多生命周期很短的heap变量,会不断触发gc。
2.空结构体作为channel消息传递
空结构(struct{}{})是不占内存空间的,有时我们在管道中传递消息是为了同步,而不关心消息传递的含义,对于这种场景可以用空结构体减少管道元素赋值开销
ch := make(chan struct{})
ch <- struct{}{}