|
|
|
Есть ли разница и какая? Java пример
|
|||
|---|---|---|---|
|
#18+
Всем доброго времени суток. Сейчас вытягиваю с базы записи которых может быть >100k и задумался... Ведь разница в ниже приведенных примерах есть и значительная. К примеру, когда куча записей вытягивается с базы в коллекцию, где поля объекта должны содержать значения колон из таблицы, то память рассходуется на ура. Так вот...Какое различие между двумя примерами? Мой вариант: В первом примере создается ссылка "p" и ей каждую итерацию присваивается объект Integer, тем самым перезаписывая ссылочные данные, что как результат - экономия памяти и быстродействие. А второй пример наооборот - кушает память и должен выполняться дольше... 1) Integer[] arr = new Integer[100000]; Integer p; for (int i = 0; i < 100000; i++){ p = new Integer(i); arr[i] = p; } 2) Integer[] arr = new Integer[100000]; for (int i = 0; i < 100000; i++){ Integer p = new Integer(i); arr[i] = p; } P.S. Как можно убедиться в правильности своей догадки я не знаю. Поэтому решил спросить у Вас. Хочется писать правильный и эффективный код. P.P.S. Если, что то не правильно расписал. Ткните. :) Спасибо зараннее! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2014, 18:01 |
|
||
|
Есть ли разница и какая? Java пример
|
|||
|---|---|---|---|
|
#18+
j_mik0, Разницы нет, т.к. в обоих случаях место для p выделяется один раз в "таблице переменных" метода. Т.е. после компиляции байткод будет одинаковый. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2014, 18:09 |
|
||
|
Есть ли разница и какая? Java пример
|
|||
|---|---|---|---|
|
#18+
Однажды у Ходжи Насредина спросили: -Скажите,а как правильно...Идти впереди носилок или сзади носилок.? -Где идти не важно...главное не быть на носилках. Ваш код ,мне напомнил эту притчу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2014, 18:10 |
|
||
|
Есть ли разница и какая? Java пример
|
|||
|---|---|---|---|
|
#18+
j_mik0, Это традиционный trade-in в разработке между памятью и процессором. Если тебе не хватат ресурса процессора, то нужно больше данных развернуть в памяти чтобы минимизировать работу процессора. И наоборот, если решение задачи требует меньше памяти, то за это можно заплатить ценой дополнительной работы процессора. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2014, 18:29 |
|
||
|
Есть ли разница и какая? Java пример
|
|||
|---|---|---|---|
|
#18+
Blazkowiczj_mik0, Это традиционный trade-in в разработке между памятью и процессором. Если тебе не хватат ресурса процессора, то нужно больше данных развернуть в памяти чтобы минимизировать работу процессора. И наоборот, если решение задачи требует меньше памяти, то за это можно заплатить ценой дополнительной работы процессора. Вышеприведенный код перпендикулярен проблеме RAM/CPU. Потребление памяти эквивалентное. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2014, 18:30 |
|
||
|
Есть ли разница и какая? Java пример
|
|||
|---|---|---|---|
|
#18+
no56892, А где можно об этом почитать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2014, 18:48 |
|
||
|
Есть ли разница и какая? Java пример
|
|||
|---|---|---|---|
|
#18+
j_mik0no56892, А где можно об этом почитать? Код должен в первую очередь - выполнять поставленую задачу. Во вторую - быть простым и понятным. И уже в третью эффективным. Вы не с той стороны зашли. А по поводу того что как устроено. Сложно сказать. Для начала нужно научиться различать переменные и объекты. А потом уже читать про размещение объектов в куче и переменных на стэке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2014, 18:52 |
|
||
|
Есть ли разница и какая? Java пример
|
|||
|---|---|---|---|
|
#18+
Трудно себе представить задачу где нужно выделять 100 тысяч обёрток для целых чисел. Не знаю зачем автору это нужно. Кстати очень часто новички страдают тем что пытаются копи-пастить базу данных на клиента целиком. Концепция работы с курсорами им чем-то не нравится. Видимо здесь также есть краеугольный камень нелюбви к SQL и ORM-офилия. Ну в данном конкретном кейсе если на уровне постановки нет NULL объектов то можно было бы написать так. Код: java 1. И экономно и уже инициализировано :) Для NULL объектов удачно идёт отрицательный диапазон (если это возможно на уровне ТЗ) или "магическое число" типа Integer.MIN_VALUE. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2014, 18:53 |
|
||
|
Есть ли разница и какая? Java пример
|
|||
|---|---|---|---|
|
#18+
..ну и конешно же. Код: java 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2014, 18:53 |
|
||
|
Есть ли разница и какая? Java пример
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, Хорошо. Понял. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2014, 18:55 |
|
||
|
Есть ли разница и какая? Java пример
|
|||
|---|---|---|---|
|
#18+
maytonТрудно себе представить задачу где нужно выделять 100 тысяч обёрток для целых чисел. Это как пример. maytonНе знаю зачем автору это нужно. Кстати очень часто новички страдают тем что пытаются копи-пастить базу данных на клиента целиком. Концепция работы с курсорами им чем-то не нравится. Видимо здесь также есть краеугольный камень нелюбви к SQL и ORM-офилия. это как раз не про меня =) Просто был интерес, как бы выглядело, если достать все записи из базы, которые нужно отоброзить на странице по 50 строчек (к примеру) и хранить их в яве, а не делать каждый раз запрос в базу от зависимости страницы. maytonНу в данном конкретном кейсе если на уровне постановки нет NULL объектов то можно было бы написать так. Код: java 1. И экономно и уже инициализировано :) Для NULL объектов удачно идёт отрицательный диапазон (если это возможно на уровне ТЗ) или "магическое число" типа Integer.MIN_VALUE. На этом спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2014, 19:01 |
|
||
|
Есть ли разница и какая? Java пример
|
|||
|---|---|---|---|
|
#18+
исходник Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. Код: plaintext 1. jd-gui Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2014, 19:03 |
|
||
|
Есть ли разница и какая? Java пример
|
|||
|---|---|---|---|
|
#18+
j_mik0no56892, А где можно об этом почитать? О! Рекомендую почитать про язык Ассэмблер. Ну, либо непосредственно про байт-код и его команды. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2014, 19:05 |
|
||
|
Есть ли разница и какая? Java пример
|
|||
|---|---|---|---|
|
#18+
Basil A. Sidorov, Ого, надо будет побаловаться с таким подходом. Но как вы узнали, что быстрее? Могу предположить, что из-за параметров компиляции... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2014, 19:08 |
|
||
|
Есть ли разница и какая? Java пример
|
|||
|---|---|---|---|
|
#18+
У разных методов одного класса не может быть разных параметров компиляции. Но в третий вариант тупо меньше на одно ненужное присваивание. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2014, 19:10 |
|
||
|
Есть ли разница и какая? Java пример
|
|||
|---|---|---|---|
|
#18+
BlazkowiczО! Рекомендую почитать про язык Ассэмблер. Ну, либо непосредственно про байт-код и его команды. Да. Ассемблером баловался. И вроде бы разобравши был, но сейчас всё забыл... Понимал... Пока было нужно )) BlazkowiczКод должен в первую очередь - выполнять поставленую задачу. Во вторую - быть простым и понятным. И уже в третью эффективным. А на этом Вам спасибо, а то совсем забыл и в замарочки кидаюсь )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2014, 19:12 |
|
||
|
Есть ли разница и какая? Java пример
|
|||
|---|---|---|---|
|
#18+
Basil A. SidorovУ разных методов одного класса не может быть разных параметров компиляции. Но в третий вариант тупо меньше на одно ненужное присваивание. Понятн. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2014, 19:15 |
|
||
|
Есть ли разница и какая? Java пример
|
|||
|---|---|---|---|
|
#18+
Если ДЕЙСТВИТЕЛЬНО есть пламенное желание просветиться: https://docs.oracle.com/javase/specs/jvms/se8/html/ Чтиво полезное. Иногда. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2014, 21:42 |
|
||
|
Есть ли разница и какая? Java пример
|
|||
|---|---|---|---|
|
#18+
Ключевые слова - heap, stack, pointer. Вот тут есть объяснения http://stackoverflow.com/questions/79923/what-and-where-are-the-stack-and-heap ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2014, 00:11 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=38802574&tid=2126278]: |
0ms |
get settings: |
14ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
332ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
| others: | 210ms |
| total: | 643ms |

| 0 / 0 |
