我目前正在使用 GoLang 创建游戏。我正在测量 FPS。我注意到使用 for 循环附加到切片的 7 fps 损失,如下所示:
vertexInfo := Opengl.OpenGLVertexInfo{}
for i := 0; i < 4; i = i + 1 {
vertexInfo.Translations = append(vertexInfo.Translations, float32(s.x), float32(s.y), 0)
vertexInfo.Rotations = append(vertexInfo.Rotations, 0, 0, 1, s.rot)
vertexInfo.Scales = append(vertexInfo.Scales, s.xS, s.yS, 0)
vertexInfo.Colors = append(vertexInfo.Colors, s.r, s.g, s.b, s.a)
}
我为每个精灵,每次平局都这样做。问题是为什么我只需要循环多次并将相同的内容附加到这些切片中就会得到如此巨大的性能损失?有没有更有效的方法来做到这一点?这不像我要添加大量的数据。每个切片包含大约 16 个元素,如上所示 (4 x 4)。
当我简单地将所有 16 个元素放在一个中时,[]float32{1..16}fps 提高了大约 4。
更新:我对每个 append 进行了基准测试,似乎每个 append 都需要 1 fps 来执行..考虑到这些数据非常静态,这似乎很多..我只需要 4 次迭代......
更新: 添加了 github 仓库https://github.com/Triangle345/GT
白猪掌柜的
扬帆大鱼
相关分类