我遇到了一些麻烦,因为我在java中有一个巨大的绘图函数,我运行了很多for循环。我想绘制的对象在ArrayList中,所以我必须使用for循环来绘制它们。有没有什么方法可以让这个过程更快?我已经集成了纹理剔除,这意味着任何不需要的东西都不会被绘制。但for循环对所有对象运行: 1.评估对象是否实际可见,是否应该绘制;2.如果可见,则绘制对象。
提前谢谢你,希望你能帮我:
下面是我的用法:
for(int loop = 0; loop < objects.size(); loop++)
{
g2d.drawImage(objects.get(loop).image, objects.get(loop).x, objects.get(loop).y, null)
}显然,我在其他地方初始化了我的ArrayList:
ArrayList<Block> objects = new ArrayList<Block>();发布于 2012-02-11 03:24:10
如果for循环的开销确实是罪魁祸首,那么您可以像这样对其进行优化:
int numBlocks = objects.size();
for(int loop = 0; loop < numBlocks; loop++)
{
Block block = objects.get(loop);
g2d.drawImage(block.image, block.x, block.y, null);
}发布于 2012-02-11 02:48:53
速度慢的一种可能是您在同一行中调用相同的objects.get(循环)3次。然而,JIT可能会优化这一点。一个比我更了解JIT的人。
https://stackoverflow.com/questions/9232556
复制相似问题