栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

附加片性能差..为什么呢?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

附加片性能差..为什么呢?

append()
如果目标切片的容量小于追加后切片的长度,则内置函数需要创建一个新的后备阵列。这也需要将当前元素从目标复制到新分配的数组,因此开销很大。

由于使用切片文字来创建

Opengl.OpenGLVertexInfo
值,因此追加到的切片很可能是空切片。即使
append()
为将来考虑并分配了比添加指定元素所需的数组更大的数组,但在您的情况下,很可能需要多次重新分配才能完成4个迭代。

如果这样创建和初始化,则可以避免重新分配

vertexInfo

vertexInfo := Opengl.OpenGLVertexInfo{    Translations: []float32{float32(s.x), float32(s.y), 0, float32(s.x), float32(s.y), 0, float32(s.x), float32(s.y), 0, float32(s.x), float32(s.y), 0},    Rotations:    []float64{0, 0, 1, s.rot, 0, 0, 1, s.rot, 0, 0, 1, s.rot, 0, 0, 1, s.rot},    Scales:       []float64{s.xS, s.yS, 0, s.xS, s.yS, 0, s.xS, s.yS, 0, s.xS, s.yS, 0},    Colors:       []float64{s.r, s.g, s.b, s.a, s.r, s.g, s.b, s.a, s.r, s.g, s.b, s.a, s.r, s.g, s.b, s.a},}

还要注意,此struct文字将不必在切片后重新分配数组。但是,如果在代码的其他位置(我们看不到),您将更多元素附加到这些片中,则可能会导致重新分配。如果是这种情况,则应创建容量更大的片,以覆盖“未来”分配(例如

make([]float64,16, 32)
)。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/633227.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号