Java для петель замедлить игру - PullRequest
0 голосов
/ 10 февраля 2012

У меня возникли проблемы, когда у меня есть огромная функция рисования в Java, и я запускаю много для циклов.Объекты, которые я хочу нарисовать, находятся в 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>();

Ответы [ 2 ]

0 голосов
/ 10 февраля 2012

Если издержки цикла 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);
}
0 голосов
/ 10 февраля 2012

Одной из причин медлительности является то, что вы вызываете один и тот же objects.get (loop) 3 раза в одной строке.Однако возможно, что JIT оптимизирует это.Кто-то, кто знает JIT лучше, чем я мог бы уточнить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...