|
|
|
какой способ лучше
|
|||
|---|---|---|---|
|
#18+
Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. или Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Люблю галеры - работящий коллектив, романтика мужского труда. Стоишь на мостике в пене брызг и эдак поворотясь: - Голубчик! Утроить количество ударов - Али-паша уходит... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2014, 16:55 |
|
||
|
какой способ лучше
|
|||
|---|---|---|---|
|
#18+
Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2014, 16:58 |
|
||
|
какой способ лучше
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, почему? В этомслучае напрягается сборщик мусора. Разве нет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2014, 17:00 |
|
||
|
какой способ лучше
|
|||
|---|---|---|---|
|
#18+
Maxiflyпочему? Потому что scope переменной минимизирован. MaxiflyВ этом случае напрягается сборщик мусора. Разве нет? Вы уже померяли? Прогнали на тестах? Реально напрягся сборщик мусора? Или все же имеет место быть преждевременная оптимизация ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2014, 17:06 |
|
||
|
какой способ лучше
|
|||
|---|---|---|---|
|
#18+
BlazkowiczMaxiflyпочему? Потому что scope переменной минимизирован. Гы. its depence... Поскольку Конструктор ArrayList вызывается без параметров, то вызывающему уже пофиг на быстродействие. Другими словами, Если до clear и после количество добавленных элементов будет одинаковым, то clear предпочтительней (add будет идти бустрее). Если нужно освободить память (массив ссылок) - то предпочтительней new ArrayList. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2014, 17:24 |
|
||
|
какой способ лучше
|
|||
|---|---|---|---|
|
#18+
Сергей Арсеньев Гы. its depence... It depends Сергей Арсеньев Поскольку Конструктор ArrayList вызывается без параметров, то вызывающему уже пофиг на быстродействие. Другими словами, Если до clear и после количество добавленных элементов будет одинаковым, то clear предпочтительней (add будет идти бустрее). Если нужно освободить память (массив ссылок) - то предпочтительней new ArrayList. Угу, а если это действительно большой нагруженый цикл, то при переиспользовании списке, он может пережить Eden и улететь в Tenured, действительно напрягая при этом GC. А не просто сдохнуть в Eden так что никто и не заметит даже. Другими словами, без актуальных измерений близких к боевым, всяческие гипотетические домыслы смысла не имеют. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2014, 17:29 |
|
||
|
какой способ лучше
|
|||
|---|---|---|---|
|
#18+
Blazkowiczвсяческие гипотетические домыслы смысла не имеют. +1 главное не сборщик, а чтобы не напрягся программист разгребая код) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2014, 17:44 |
|
||
|
какой способ лучше
|
|||
|---|---|---|---|
|
#18+
Я бы сказал так: при большом внешнем цикле и маленьком внутреннем вариант с предварительным созданием списка отработает быстрее (например, 10000000:10), но с мизерным преимуществом. При этом да, будут созданы проблемы для сборщика мусора, так что полученное преимущество может потом аукнуться. Вот о чем действительно стоит беспокоиться при большом внешнем цикле - если во внутреннем цикле используется итератор, то лучше его переписать на for (i=0;......) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2014, 17:57 |
|
||
|
какой способ лучше
|
|||
|---|---|---|---|
|
#18+
ivanraВот о чем действительно стоит беспокоиться при большом внешнем цикле - если во внутреннем цикле используется итератор, то лучше его переписать на for (i=0;......) Почему? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2014, 18:23 |
|
||
|
какой способ лучше
|
|||
|---|---|---|---|
|
#18+
MaxiflyПочему? Не совсем точно выразился, имелась в виду обработка массивов с применением итераторов. Вот, например, такой метод: Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. Если подать на вход массив Integer[10][1000000], то во время выполнения будет создано 11 итераторов, а если массив Integer[1000000][10], то 1000001 итератор. Разница может быть очень существенной. Поэтому такие циклы разворачивают короткой частью вперед. Но если характер вычислений не позволяет, то вместо итераторов используют обычные for(int i=0;...) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.02.2014, 21:25 |
|
||
|
какой способ лучше
|
|||
|---|---|---|---|
|
#18+
ivanraЕсли подать на вход массив Integer[10][1000000], то во время выполнения будет создано 11 итераторов, Будет создано ровно 0 итераторов. Массивы итерируются именно по индесу, даже в enhanced for. Можете скомпилировать свой код и javap'ом его посмотреть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2014, 09:21 |
|
||
|
|

start [/forum/topic.php?fid=59&fpage=187&tid=2127699]: |
0ms |
get settings: |
8ms |
get forum list: |
10ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
42ms |
get topic data: |
7ms |
get forum data: |
1ms |
get page messages: |
37ms |
get tp. blocked users: |
1ms |
| others: | 235ms |
| total: | 345ms |

| 0 / 0 |
