golang 编程笔记

【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{}{}
上一篇下一篇

猜你喜欢

热点阅读