Go 中,除了使用缓存池,如何减少 slice 的动态分配??
比如,有这样一个函数:
func foo(n int) []byte { bar := make([]byte, n) ...do some thing with b return bar }
bar :<爱尬聊_知识大全>= make([]byte, n)
是一处动态内存分配,函数的其他部分不会再对bar
的大小进行修改了。这种情况下有没有方法消除bar := make([]byte, n)
这处动态内存分配?
肖建 4小时前
如果是Read Only 的可以使用楼上的方法。
百合2017ABC 4小时前
类似于redis的内存管理,初始化一个大slice,每次使用大slice的一部分
kiwikiwi 4小时前
申明一个生命周期在函数foo以外的slice,每次复用这个slice(前提是你需要保证这样没问题)
a224229 4小时前
可以bar := make([]byte, n, capacity)
,预先指定一个容量。
凌乱萌萌哒 4小时前
这个问题只能从你自身的需求来讲,每次调用foo如果期望一个独立的slice返回,那么只能这么办了。如果不是这样,可以考虑以下方法:
岁月打碎记忆 4小时前
这种问题是很单纯的自己想多的。