Я занимаюсь разработкой игры для Android на Java, и сборщик мусора регулярно включается и вызывает скачок задержки.
Посмотрев на распределение объектов, большая часть того, что перерабатывается, - это float []. Я создаю новый float [] каждый кадр для нескольких объектов.
Имеет ли смысл повторно использовать float [] или влияние на производительность незначительно (особенно по сравнению с объектами).
public float[] rectangleToVerts(float x, float y, float width, float height)
float[] verts = new float[8];
verts[0] = x - width / 2;
verts[1] = y + height / 2;
verts[2] = x + width / 2;
verts[3] = y + height / 2;
verts[4] = x + width / 2;
verts[5] = y - height / 2;
verts[6] = x - width / 2;
verts[7] = y - height / 2;
return verts;
}
public void tick(){
shape.setVertices(rectangleToVerts(x, y, 5, 5);
}
VERSUS
public float[] rectangleToVerts(float x, float y, float width, float
height, float[] verts)
verts[0] = x - width / 2;
verts[1] = y + height / 2;
verts[2] = x + width / 2;
verts[3] = y + height / 2;
verts[4] = x + width / 2;
verts[5] = y - height / 2;
verts[6] = x - width / 2;
verts[7] = y - height / 2;
return verts;
}
private float[8] verts;
public void tick(){
shape.setVertices(rectangleToVerts(x, y, 5, 5, verts);
}