slice 预分配不是玄学:什么时候值得 make 容量
Go 里 append 很方便,但在确定数据规模时,提前给 slice 容量可以减少扩容和拷贝。比如一次查询后组装 DTO,结果数量已经知道,就应该使用 make([]T, 0, len(rows))。
items := make([]OrderDTO, 0, len(orders))
for _, order := range orders {
items = append(items, convert(order))
}不要为了“看起来性能好”到处预分配。容量来自明确上限才有意义;如果只是猜一个数字,可能浪费内存,也让代码变得不可信。
我的判断是:批量转换、分页列表、固定长度解析值得预分配;普通几条数据的业务代码不用刻意处理。
版权申明
本文系作者 @blogger 原创发布在slice 预分配不是玄学:什么时候值得 make 容量。未经许可,禁止转载。
评论
-- 评论已关闭 --
全部评论