Где объявить счетчик наиболее глубоко вложенного цикла в Java? - PullRequest
1 голос
/ 05 марта 2011

Я новичок в Java и создаю небольшой школьный проект для Android.Если у меня есть вложенный цикл for:

for (int i = 0; i <1000; ++i) {
    for (int j = 0; j <1000; ++j)  {
        // .. this code will be executed a 1,000,000 times
    }
}

Влияет ли это на производительность, что j объявляется на каждой итерации внешнего цикла?Если да, какой хороший способ это исправить?Это школьный проект, поэтому я должен написать код, который использует наименьшее количество памяти.Спасибо!

Ответы [ 5 ]

4 голосов
/ 05 марта 2011

Нет, это не так, и рекомендуется объявлять переменную в максимально ограниченном объеме - это делает ее более понятной для удобства чтения.Это также гарантирует, что вы случайно не используете значение из конца одного цикла в начале следующего.

(Лично я бы остерегался любого, кто заставлял бы вас использовать абсолютный минимальный объем памятивместо того, чтобы концентрироваться на удобочитаемости и измеряется оптимизация там, где это важно.)

2 голосов
/ 05 марта 2011

Объявление вложенных переменных не влияет на производительность, фактически рекомендуется, чтобы использование переменной ограничивалось правильной областью действия. Это просто помогает избежать простых ошибок.

0 голосов
/ 05 марта 2011

Нет, это не влияет на производительность.

То, как вы написали это лучший способ: всегда объявляйте переменную так, чтобы ее область действия не превышала необходимую.

И пусть компилятороптимизировать производительность.

0 голосов
/ 05 марта 2011

Единственный способ сейчас это попробовать по-разному. Я могу вам сказать, что это скорее всего не будет проблемой производительности, и, как правило, вы не беспокоитесь об оптимизации, пока она не станет известной.

0 голосов
/ 05 марта 2011

Производительность влияет на распределение целого числа.Тем не менее, это настолько смехотворно мало, что я бы не стал делать это иначе.Хорошо известное высказывание гласит: «преждевременная оптимизация - корень всего зла».

РЕДАКТИРОВАТЬ: протестировал его с System.nanoTime() после комментария Джона.Нет разницы в том, «предварительно декларируешь» ты это или нет.Так что я ошибался из-за влияния.

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