![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| powerOn |
|
||||||||||||
![]() software saboteur ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4367 Регистрация: 7.10.2005 Репутация: 47 Всего: 159 |
Здравствуйте!
Думаю, что многие задавались вопросом какая из коллекций работает быстрее. И у меня возник такой же вопрос, решить который я попытался организовав "открытый чемпионат Java коллекций"! Первый чемпионат будет состоять из 2 соревнований: добавление элемента и удаление элемента. В соревнованиях принимали учатстие 4 команды (интерфейсы коллекций): Map, Set, Queue и List. Среди кандидатов на победу от сборной Set были следующии:
Среди кандидатов на победу от сборной List были следующии:
Среди кандидатов на победу от сборной Map были следующии:
И наконец сборная Queue представлена след. спортсменами:
Вот план соревнавания, представленный в Java коде. Спортмены сначала добавляют в себя элементы, а потом удаляют их. Пусть победит быстрейший!!!
Я предлагаю что бы вы самостаятельно провели соревнавание на своем "стадионе", чтобы лучше почувствовать дух соперничества, а результаты выложить и обсудить здесь. Что касается проведенного у меня турнира, то мой стадион таков: Intel Celeron 2.6 512 RAM результаты:
По добавлению самые быстрые: ArrayList, LinkedHashSet. По удалению самые быстрые: HashSet, TreeSet. По добавлению самые медленные: HashMap, LinkedHashMap. По удалению самые медленные: ArrayList, Vector. PS: Правила соревнаваний, впрочем, еще можно пересмотреть. |
||||||||||||
|
|||||||||||||
| powerOn |
|
||||
![]() software saboteur ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4367 Регистрация: 7.10.2005 Репутация: 47 Всего: 159 |
Сегодня исправил некоторые ошибки связанные с интерфейсом Set (да и для других интерфейов тоже) - добавил полную уникальность элементов, что позволило получить более объективные результаты....
Результаты:
добавление самые быстрые: ArrayList, PriorityQueue, Vector самые медленные: LinkedHashMap, HashSet. удаление самые быстрые: LinkedList, LinkedBlockingQueue. самые медленные: ArrayList, Vector. вот так Это сообщение отредактировал(а) MoonCat - 5.4.2006, 11:45 |
||||
|
|||||
| ALKS |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 354 Регистрация: 22.3.2006 Репутация: 1 Всего: 11 |
хм. собственно, если верить спецификациям, такие результаты и должны быть. хотя любопытно конечно. респект
|
|||
|
||||
| Bozo |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 32 Регистрация: 5.4.2006 Репутация: нет Всего: нет |
Такой тест уже существует. Здесь пример запуска либы и результат выполнения на P4 3400. Здесь результат на моей машине. |
|||
|
||||
| COVD |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1655 Регистрация: 26.7.2005 Репутация: 17 Всего: 43 |
Во всемирно известной книге Эккеля тоже нечто такое есть:
Type Get Iteration Insert Remove Массив 1430 3850 нет нет ArrayList 3070 12200 500 46850 LinkedList 16320 9110 110 60 Vector 4890 16250 550 46850 Но все эти коллекции предполагают кастинг, поскольку возвращают обьекты. Если уж скорость важна, то возможно имеет смысл специализированные коллекции делать. А почему вы только добавление\удаление рассматриваете. Вы данные только добавляете-удаляете и больше никак не используете ? Это сообщение отредактировал(а) COVD - 5.4.2006, 23:10 |
|||
|
||||
| powerOn |
|
|||
![]() software saboteur ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4367 Регистрация: 7.10.2005 Репутация: 47 Всего: 159 |
ну это только эксперимент, ничего сверх серьезного я написать не хотел. Удаление и Добавление поскольку это наиболее часто используемые операции. Но если Вам угодно, то допишите другие операции и выкладывайте получившийся тест сюда, лично мне будет интерено. Я может и сам через некоторое время еще что-нибудь допишу.... |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |