powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / какой способ лучше
11 сообщений из 11, страница 1 из 1
какой способ лучше
    #38549014
Maxifly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
        List<String> listTest = new ArrayList<>();
        
        for () {
            
            // делаем что-то
            listTest.clear();
            for () {

                // делаем что-то
                listTest.add(...);
            }
                }
 



или

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
        List<String> listTest = null;         
        for () {
            
            // делаем что-то
            listTest = new ArrayList<>();
            for () {
                // делаем что-то
                listTest.add(...);
            }
            listTest.clear();
        }
 





Люблю галеры - работящий коллектив, романтика мужского труда. Стоишь на мостике в пене брызг и эдак поворотясь:
- Голубчик! Утроить количество ударов - Али-паша уходит...
...
Рейтинг: 0 / 0
какой способ лучше
    #38549022
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
        for () {            
            // делаем что-то
           List<String> listTest = new ArrayList<>();
            for () {
                // делаем что-то
                listTest.add(...);
            }
        }
 
...
Рейтинг: 0 / 0
какой способ лучше
    #38549026
Maxifly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,
почему? В этомслучае напрягается сборщик мусора. Разве нет?
...
Рейтинг: 0 / 0
какой способ лучше
    #38549039
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Maxiflyпочему?
Потому что scope переменной минимизирован.

MaxiflyВ этом случае напрягается сборщик мусора. Разве нет?
Вы уже померяли? Прогнали на тестах? Реально напрягся сборщик мусора?
Или все же имеет место быть преждевременная оптимизация ?
...
Рейтинг: 0 / 0
какой способ лучше
    #38549074
Сергей Арсеньев
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczMaxiflyпочему?
Потому что scope переменной минимизирован.
Гы. its depence...

Поскольку Конструктор ArrayList вызывается без параметров, то вызывающему уже пофиг на быстродействие.

Другими словами,

Если до clear и после количество добавленных элементов будет одинаковым, то clear предпочтительней (add будет идти бустрее).

Если нужно освободить память (массив ссылок) - то предпочтительней new ArrayList.
...
Рейтинг: 0 / 0
какой способ лучше
    #38549084
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Арсеньев Гы. its depence...

It depends

Сергей Арсеньев Поскольку Конструктор ArrayList вызывается без параметров, то вызывающему уже пофиг на быстродействие.

Другими словами,

Если до clear и после количество добавленных элементов будет одинаковым, то clear предпочтительней (add будет идти бустрее).

Если нужно освободить память (массив ссылок) - то предпочтительней new ArrayList.
Угу, а если это действительно большой нагруженый цикл, то при переиспользовании списке, он может пережить Eden и улететь в Tenured, действительно напрягая при этом GC. А не просто сдохнуть в Eden так что никто и не заметит даже.

Другими словами, без актуальных измерений близких к боевым, всяческие гипотетические домыслы смысла не имеют.
...
Рейтинг: 0 / 0
какой способ лучше
    #38549111
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowiczвсяческие гипотетические домыслы смысла не имеют.
+1
главное не сборщик, а чтобы не напрягся программист разгребая код)
...
Рейтинг: 0 / 0
какой способ лучше
    #38549128
ivanra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я бы сказал так: при большом внешнем цикле и маленьком внутреннем вариант с предварительным созданием списка отработает быстрее (например, 10000000:10), но с мизерным преимуществом. При этом да, будут созданы проблемы для сборщика мусора, так что полученное преимущество может потом аукнуться.
Вот о чем действительно стоит беспокоиться при большом внешнем цикле - если во внутреннем цикле используется итератор, то лучше его переписать на for (i=0;......)
...
Рейтинг: 0 / 0
какой способ лучше
    #38549185
Maxifly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ivanraВот о чем действительно стоит беспокоиться при большом внешнем цикле - если во внутреннем цикле используется итератор, то лучше его переписать на for (i=0;......)

Почему?
...
Рейтинг: 0 / 0
какой способ лучше
    #38549416
ivanra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MaxiflyПочему?
Не совсем точно выразился, имелась в виду обработка массивов с применением итераторов.
Вот, например, такой метод:
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
	Integer compute(Integer[][] a2) {
		Integer result = 0;
		for (Integer[] a1:a2) {
			for (Integer a: a1) {
				result += a;
			}
		}
		return result;
	}


Если подать на вход массив Integer[10][1000000], то во время выполнения будет создано 11 итераторов, а если массив Integer[1000000][10], то 1000001 итератор. Разница может быть очень существенной.
Поэтому такие циклы разворачивают короткой частью вперед. Но если характер вычислений не позволяет, то вместо итераторов используют обычные for(int i=0;...)
...
Рейтинг: 0 / 0
какой способ лучше
    #38549687
maxkar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ivanraЕсли подать на вход массив Integer[10][1000000], то во время выполнения будет создано 11 итераторов,
Будет создано ровно 0 итераторов. Массивы итерируются именно по индесу, даже в enhanced for. Можете скомпилировать свой код и javap'ом его посмотреть.
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / какой способ лучше
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]