繁体   English   中英

Java for循环会减慢游戏速度

[英]Java for loops slow down game

我在Java中有一个巨大的paint函数并且在许多for循环中运行时遇到了麻烦。 我要绘制的对象在ArrayList中,所以我必须使用for循环将它们全部绘制。 有什么办法可以使速度更快吗? 我已经集成了纹理剔除,意味着不需要的任何东西都不会被绘制。 但是for循环将对所有对象运行:1.评价对象是否实际可见并应绘制2.绘制对象(如果可见)。

在此先感谢,希望您能帮到我:D

[编辑]这就是我的使用方式:

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>();

变慢的一种可能是,您在同一行中调用了3个相同的objects.get(loop)。 但是,JIT可能会对此进行优化。 比我更精通JIT的人。

如果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);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM