|
|
|
Вставка в середину LinkedList медленнее чем ArrayList, почему?
|
|||
|---|---|---|---|
|
#18+
Пробую вставку данных в середину списка, чтобы увидеть что ArrayList медленнее LinkedList при вставке в середину списка, но почему то получаю обратную ситуацию Код: plaintext 1. Я что то не так делаю/прочел/понял про работу этих листов? Код: java 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2017, 14:50 |
|
||
|
Вставка в середину LinkedList медленнее чем ArrayList, почему?
|
|||
|---|---|---|---|
|
#18+
DevIgo, Вы померяли не только вставку но и поиск по индексу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2017, 14:57 |
|
||
|
Вставка в середину LinkedList медленнее чем ArrayList, почему?
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, Были у меня сомнения на этот счет, а как тогда может выглядеть вставка в середину листа без поиска? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2017, 15:06 |
|
||
|
Вставка в середину LinkedList медленнее чем ArrayList, почему?
|
|||
|---|---|---|---|
|
#18+
DevIgoBlazkowicz, Были у меня сомнения на этот счет, а как тогда может выглядеть вставка в середину листа без поиска? Ну, либо через рефлексию с LinkedList, чтобы достучаться до объекта Node, который включает в себя ссылки на соседей, либо свой связный список написать. Какая супер задача-то? Померять очевидное? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2017, 15:11 |
|
||
|
Вставка в середину LinkedList медленнее чем ArrayList, почему?
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, Реальной задачи нет, просто из вычитанного это декларируется как преимущество одного над другим, а получается в реальной жизни этим воспользоваться то нельзя) Спасибо за пояснения ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2017, 15:13 |
|
||
|
Вставка в середину LinkedList медленнее чем ArrayList, почему?
|
|||
|---|---|---|---|
|
#18+
DevIgoРеальной задачи нет, просто из вычитанного это декларируется как преимущество одного над другим, Ну, с точки зрения структур данных, вам никто не мешает хранить ссылку на середину, тогда искать надобности не будет. Вы же не про Java Collection читаете? DevIgoа получается в реальной жизни этим воспользоваться то нельзя) Спасибо за пояснения В реальной жизни есть ещё куча оптимизаций работы с массивами на всех возможных уровнях от GC и JIT до CPU, которые нивелируют даже теоретически возможное преимущество LinkedList. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2017, 15:18 |
|
||
|
Вставка в середину LinkedList медленнее чем ArrayList, почему?
|
|||
|---|---|---|---|
|
#18+
DevIgoBlazkowicz, Реальной задачи нет, просто из вычитанного это декларируется как преимущество одного над другим, а получается в реальной жизни этим воспользоваться то нельзя) Спасибо за пояснения Еще как можно. Допустим, у нас есть коллекция, нужно найти элемент с некоторым набором свойств и вставить объект после этого элемента. ArrayList и LinkedList дадут примерно одинаковое время поиска, но LinkedList выиграет на вставке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2017, 15:25 |
|
||
|
Вставка в середину LinkedList медленнее чем ArrayList, почему?
|
|||
|---|---|---|---|
|
#18+
DevIgoЯ что то не так делаю/прочел/понял про работу этих листов? 1. Вы меряете не линейкой, а прыгающим мячиком. Т.е. резульаты вообще ни о чём. Надо использовать jmh - например вот ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2017, 15:33 |
|
||
|
Вставка в середину LinkedList медленнее чем ArrayList, почему?
|
|||
|---|---|---|---|
|
#18+
BlazkowiczНу, с точки зрения структур данных, вам никто не мешает хранить ссылку на середину, тогда искать надобности не будет. Вы же не про Java Collection читаете? Да BlazkowiczВ реальной жизни есть ещё куча оптимизаций работы с массивами на всех возможных уровнях от GC и JIT до CPU, которые нивелируют даже теоретически возможное преимущество LinkedList. Интересно замечание) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2017, 15:53 |
|
||
|
Вставка в середину LinkedList медленнее чем ArrayList, почему?
|
|||
|---|---|---|---|
|
#18+
Лысый дядькаЕще как можно. Допустим, у нас есть коллекция, нужно найти элемент с некоторым набором свойств и вставить объект после этого элемента. ArrayList и LinkedList дадут примерно одинаковое время поиска, но LinkedList выиграет на вставке. Судя по моему тесту как раз таки в случае поиска и вставки ArrayList поиск и вставку делает быстрее, поэтому непонятно зачем именно при поиске и вставке будет использовать не ArrayList ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2017, 15:56 |
|
||
|
Вставка в середину LinkedList медленнее чем ArrayList, почему?
|
|||
|---|---|---|---|
|
#18+
Спасибо, посмотрю ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2017, 15:56 |
|
||
|
Вставка в середину LinkedList медленнее чем ArrayList, почему?
|
|||
|---|---|---|---|
|
#18+
DevIgoСудя по моему тесту как раз таки в случае поиска и вставки ArrayList поиск и вставку делает быстрее, Вы забыли уточнение, если поиск идет по порядковому номеру элемента. Для задачи вставить элемент со значением 4 после каждого элемента, значение которого равно 3. Могут всплыть ньюансы. Правда ArrayList.ensureCapacity может опять все поменять, но в любом случае переносов данных будет больше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2017, 16:10 |
|
||
|
Вставка в середину LinkedList медленнее чем ArrayList, почему?
|
|||
|---|---|---|---|
|
#18+
Код: java 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. 37. 38. 39. 40. 41. 42. 43. 44. 45. На моей машине выгода очевидна авторArrayList = 10695445356 LinkedList = 237158490 Total 10458286866 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.09.2017, 17:44 |
|
||
|
Вставка в середину LinkedList медленнее чем ArrayList, почему?
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2017, 10:16 |
|
||
|
Вставка в середину LinkedList медленнее чем ArrayList, почему?
|
|||
|---|---|---|---|
|
#18+
DevIgo, не помню где я услышал/прочитал про LinkedList, но вроде бы его автор Doug Lea как то признался, что ему ни разу не встретилось случая, когда потребовалось бы его использовать. Alexey TominDevIgoЯ что то не так делаю/прочел/понял про работу этих листов? 1. Вы меряете не линейкой, а прыгающим мячиком. Т.е. резульаты вообще ни о чём. Надо использовать jmh - например вот ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2017, 11:23 |
|
||
|
Вставка в середину LinkedList медленнее чем ArrayList, почему?
|
|||
|---|---|---|---|
|
#18+
just_vladimirDevIgo, не помню где я услышал/прочитал про LinkedList, но вроде бы его автор Doug Lea как то признался, что ему ни разу не встретилось случая, когда потребовалось бы его использовать. https://twitter.com/joshbloch/status/583813919019573248 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.09.2017, 13:54 |
|
||
|
Вставка в середину LinkedList медленнее чем ArrayList, почему?
|
|||
|---|---|---|---|
|
#18+
llemingjust_vladimirDevIgo, не помню где я услышал/прочитал про LinkedList, но вроде бы его автор Doug Lea как то признался, что ему ни разу не встретилось случая, когда потребовалось бы его использовать. https://twitter.com/joshbloch/status/583813919019573248 Точно! А когда писал комментарий не мог найти правильное упоминание, потому что это был Джошуа Блох, а не Даг Ли ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2017, 12:57 |
|
||
|
Вставка в середину LinkedList медленнее чем ArrayList, почему?
|
|||
|---|---|---|---|
|
#18+
llemingjust_vladimirDevIgo, не помню где я услышал/прочитал про LinkedList, но вроде бы его автор Doug Lea как то признался, что ему ни разу не встретилось случая, когда потребовалось бы его использовать. https://twitter.com/joshbloch/status/583813919019573248 Неожиданный поворот) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.09.2017, 14:23 |
|
||
|
Вставка в середину LinkedList медленнее чем ArrayList, почему?
|
|||
|---|---|---|---|
|
#18+
BlazkowiczНу, либо через рефлексию с LinkedList, чтобы достучаться до объекта Node, который включает в себя ссылки на соседей, либо свой связный список написать. Какая супер задача-то? Померять очевидное? Что за привычка предлагать плохие варианты не предложив при этом штатного? Послушает вас топикстартер - и подумает, что других способов нет. На самом деле, вставка в середину списка без поиска делается через итератор - ListIterator.add(), один раз его получаем - и через него делаем все вставки. В этом случае, время вставки - это будет только время вставки. Только в вашем случае итератор еще передвигать каждый раз придется. Работать, наверное, будет быстрей, чем ваш вариант, но не факт, что быстрей ArrayList. Связанный список быстр на вставку-удаление только при условии что уже есть итератор, который указывает куда надо. Если итератора нет - его надо или получать поиском, или получать сдвигом другого итератора (что является, по сути формой линейного поиска, в котором время прямо пропорционально кол-ву шагов) - и вот эти операции съедают много, и в подавляющем большинстве случаев ArrayList оказывается не хуже. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2017, 12:48 |
|
||
|
Вставка в середину LinkedList медленнее чем ArrayList, почему?
|
|||
|---|---|---|---|
|
#18+
А никого не щекочет тестовый пример, который я выше дал? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2017, 13:32 |
|
||
|
Вставка в середину LinkedList медленнее чем ArrayList, почему?
|
|||
|---|---|---|---|
|
#18+
Лысый дядька, Так тут выбран оптимальный вариант для LinkedList и не оптимальный для ArrayList. Если надо вставить N узлов в K точек. То для массива это делается не так. Один раз расширяем и потом сзади заполняем. Понятное дело N раз делать расширение с копированием всенго массива убъет все нафиг. А для связанного списка одлна пробежка и куча вставок самое милое дело. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.09.2017, 16:11 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=39522789&tid=2122575]: |
0ms |
get settings: |
10ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
77ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
67ms |
get tp. blocked users: |
1ms |
| others: | 225ms |
| total: | 417ms |

| 0 / 0 |
