Go 里 append 很方便,但在确定数据规模时,提前给 slice 容量可以减少扩容和拷贝。比如一次查询后组装 DTO,结果数量已经知道,就应该使用 make([]T, 0, len(rows))

items := make([]OrderDTO, 0, len(orders))
for _, order := range orders {
    items = append(items, convert(order))
}

不要为了“看起来性能好”到处预分配。容量来自明确上限才有意义;如果只是猜一个数字,可能浪费内存,也让代码变得不可信。

我的判断是:批量转换、分页列表、固定长度解析值得预分配;普通几条数据的业务代码不用刻意处理。

分类: Go 语言笔记 标签: Go 工程实践 性能

评论

-- 评论已关闭 --

全部评论