Рейтинг темы:
  • 2 Голос(ов) - 5 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
Коллекции
#1
Пишу "шпоргалку" по производительности различных коллекций в зависимости от операций с ними.
Готовы результаты по Guava, Apache Commons, Trove и стандартных коллекций Java.
Пока очень впечатлила Trove.
Что посоветуете еще потестить?
Результатами бенчмарков поделюсь. Wink

UPD1:
Ремарка: Большое спасибо GabberBaby что познакомил с такой полезной тулзой как JMH.

Тесты пока проводились для листов и очередей с типом Object, а для map`ов<String, Obejct>.
По немного буду добавлять результаты для различных коллекций и действий с ними.
А вот и результаты бенчмарков (советую скачать с ЯД этот XML файл, а то если через сайт смотреть, то плохо отображается)

[Изображение: 6435438.png]

[URL="https://yadi.sk/i/-72U5XAldi25h"]Скачать
[/URL]
Студия L2dev.su. Сборки Lindvior, Epilogue. ICQ 1817070. Skype wowan.sm
Ответ
#2
WoWan-SM Написал:Пишу "шпоргалку" по производительности различных коллекций в зависимости от операций с ними.
Готовы результаты по Guava, Apache Commons, Trove и стандартных коллекций Java.
Пока очень впечатлила Trove.
Что посоветуете еще потестить?
Результатами бенчмарков поделюсь. Wink


HPPC от CarrotLabs? http://labs.carrotsearch.com/hppc.html Давно как-то тестили, но задача была другая - минимум памяти.
Ответ
#3
aCis давно выбросили Trove т.к. никак не влияла на производительность.

Цитата:Trove drop
- drop entirely usage of that library, as there is almost no impact on performance.
- basically :
- TIntObjectHashMap : Map<Integer, Object>
- TIntIntHashMap : Map<Integer, Integer>
- TShortObjectHashMap : Map<Short, Object>
- TIntArrayList : List<Integer>
Родился, живу и когда-нибудь умру.
Ответ
#4
Попробуй https://github.com/OpenHFT/Koloboke

PS если бенчмарки сделаны не с помощью jmh, то даже не вздумай их выкладывать.
Ответ
#5
Donatte Написал:aCis давно выбросили Trove т.к. никак не влияла на производительность.

И они сделали большую ошибку Sad Т.к. по полученным результатам trove map с примитивным ключом (тем же Integer) дает очень большую все остальными коллекциям (в однопоточной среде, в многопоточной результаты могут быть другие)

Добавлено через 6 минут
GabberBaby Написал:Попробуй https://github.com/OpenHFT/Koloboke

PS если бенчмарки сделаны не с помощью jmh, то даже не вздумай их выкладывать.

Завтра протестирую.
Слушай, а в чем преимущество тестировании на jmh? Тестирование в многопоточной среде и при как можно больших различных условий?
Вообще я пытался найти свежие результаты тестов хотя бы для однопоточной среды, но таковых нет нигде. Да и хотя бы с эллементарных тестов в однопоточной среде бы начать хотел для новичков.
Студия L2dev.su. Сборки Lindvior, Epilogue. ICQ 1817070. Skype wowan.sm
Ответ
#6
В чём именно они ошиблись?
Родился, живу и когда-нибудь умру.
Ответ
#7
WoWan-SM Написал:Слушай, а в чем преимущество тестировании на jmh? Тестирование в многопоточной среде и при как можно больших различных условий?
Вообще я пытался найти свежие результаты тестов хотя бы для однопоточной среды, но таковых нет нигде. Да и хотя бы с эллементарных тестов в однопоточной среде бы начать хотел для новичков.

Jmh позволяет делать бенчмарки в отрыве от различных хреновин, которые влияют на производительность кода. Вот тут можно посмотреть отличные примеры, которые объясняют как им пользоваться и почему надо делать бенчмарки с его помощью.

Я лично считаю, что нет необходимости использовать различные трувы и другие коллекции с примитивами, потому что по скорости они редко превосходят стандартные. Единственный вариант когда их можно использовать - это хранение действительно огромного кол-во записей в коллекциях, только в таких случаях можно заметить на сколько меньше примитивные коллекции хавают меньше памяти.
Ответ
#8
Ну в разных условиях , используются разные типы коллекций.
Вообще для этого есть микротесты.
Ответ
#9
Я уже писал тебе в скайпе, что никому не нужны тесты коллекций в синто-тесте на одном только потоке под одними условиями. Нужны полный микротесты под concurrency, thread-safe, etc...

По поводу какие еще библиотеки стоит добавить: Javolution, Napile (от VISTALL'a).
m0nster.art - clear client patches, linkz to utils & code.
Гадаю по капче.
Ответ
#10
Pointer*Rage Написал:Я уже писал тебе в скайпе, что никому не нужны тесты коллекций в синто-тесте на одном только потоке под одними условиями. Нужны полный микротесты под concurrency, thread-safe, etc...

По поводу какие еще библиотеки стоит добавить: Javolution, Napile (от VISTALL'a).

Ооооо... с разбаном тебя :eq:
Студия L2dev.su. Сборки Lindvior, Epilogue. ICQ 1817070. Skype wowan.sm
Ответ


Перейти к форуму:


Пользователи, просматривающие эту тему: 1 Гость(ей)