Проблема отладки Eclipse - PullRequest
       5

Проблема отладки Eclipse

0 голосов
/ 05 сентября 2011

У меня есть игра с использованием LWJGL и Slick2D, сделанная на Java. Я недавно добавил этот код, чтобы получить, если пиксель пуст:

for (Entity e : onscreenents)
    if (e.getBlockID() == 1 || e.getBlockID() == -2)
        for (int x = e.getX(); x < e.getX() + 18; x++)
            for (int y = e.getY(); y < e.getY() + 18; y++)
                if (x > 0 && y > 0 && x < empty.length && y < empty[x].length)
                    empty[x][y] = false;

Этот код работает нормально в режиме Run Eclipse, но когда я запускаю программу в режиме Debug Eclipse, игра запускается очень медленно и очень глючно. Удаление этого блока кода делает режим отладки таким же плавным, как и режим Run.

Кто-нибудь знает, почему это происходит, и это моя вина или нет? Это действительно помогло бы:)

1 Ответ

1 голос
/ 05 сентября 2011

Это может помочь:

Ускорение Tomcat в режиме отладки с помощью Eclipse IDE

Почему код Java замедляется в отладчике?

Почему отлаживаемая программа так сильно тормозит при использовании отладки записи метода?

Если вам действительно нужны улучшения производительности, тогда комментарий bmargulies действителен. Попробуйте переместить инварианты из цикла (ов), чтобы они рассчитывались только один раз.

Поэтому переместите вызовы e.getX() и e.getY() над циклами for, чтобы они вызывались только один раз, и сохраните их в локальных переменных. То же самое с empty.length (если они не меняются при каждой итерации цикла).

И, возможно, даже сохранить empty[x] в локальной переменной, поскольку разыменование элементов массива медленнее, чем доступ к локальной переменной.

Вы также делаете тест для x>0 и y>0. Если вас интересуют только значения + ve, то вы можете проверить e.getX()+18 и e.getY()+18, чтобы увидеть, являются ли они + ve перед циклами, так как вам, возможно, даже не придется их выполнять. (например, если e.getX()+18<=0, вам не нужно делать цикл x. То же самое для y)

Остерегайтесь преждевременной оптимизации, хотя.

...