在性能优化中,内存复用能减少内存申请与释放,提高性能,尤其在大量数据的重复声明中。在golang的内存复用有很多方法,重点在于怎么样避免新建对象,下面介绍简单但作用明显的复用方式:
sync.pool的内存复用,常用于结构体对象复用
type User struct {
Name string
}
func (u User)Reset(){
u.Name = ""
}
var userPool = &sync.Pool{
New: func() interface{} {
return &User{}
},
}
func GetUser() *User {
return userPool.Get().(*User)
}
func PutUser(u *User) {
u.Reset()
userPool.Put(u)
}
切片的内存复用
type User struct {
Name string
Location []string
}
// 减少内存分配,下次复用
func (u *User) ResetNew() {
u.Location = u.Location[:0]
}
// 重新申明
func (u *User) ResetOld() {
u.Location = make([]string, 0)
}
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。