Посмотрел свои методы, посмотрел реализацию JDK 1.7, посмотрел реализацию коллег по обучению.
Примерно все одинокого, как у всех.
Правда сравниваю естественно с JDK 1.8 HashMap. Не ужели вопрос в этом. Может у кого будут еще какие варианты?
Решение не могу прикрепить т.к. задачу решил, интересно просто, у всех так?
Ну в идеале, конечно, может у кого конкретные ответы будут....
Mike
35 уровень
Задачу решил. А скорость оставляет желать лучшего. 25% проиграл по скорости.
Решен
Комментарии (9)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
hidden #2322530
10 декабря 2020, 18:42
а вопрос то в чем?
+1
Mike
10 декабря 2020, 18:48
за счет чего проигрыш при самостоятельной реализации на 25% медленнее HashMap JDK 1.8
Из за того то в JDK 1.8 что-то очень круто оптимизировали?
0
hidden #2322530
10 декабря 2020, 19:00решение
при самостоятельной реализации ты не учитываешь определение индексов, бакетов, и хэшей) а также, что элементы с одинаковым индексом кладутся в одну ячейку через связанный список.
просто люди, что описали работу HashMap, намного умнее нас с тобой) поэтому оно быстрее. иначе бы эту реализацию не включили в JDK) к тому же самая реализация HashMap появилась гораздо раньше чем JDK 1.8, аж в самой 1.2
PS. 25% это лишь твоё субъективное заявление, по факту может и больше, а может и меньше)
всё зависит от твоего компа в конкретном замере. и я не думаю, что ты замерял согласно методикам, с использованием спец инструментов.
PS. HashBiMap насколько я помню быстрее стандартной HashMap? что ты им этот вопрос не задашь, что как так, они сделали быстрее стандартного?
+2
Wladyslaw Java Developer Master
10 декабря 2020, 19:08решение
Дяди с учеными степенями хешмапу с 97-го года пишут, патчат, что-то там рефакторят, оптимизируют. Оно странно бы было, если реализация слепленная на коленке быстрее бы работала.
+4
Mike
10 декабря 2020, 21:17
Ребята, это понятно. спасибо большое за развернутые ответы.
Просто мне показалось, что я методы аналогично реализовывал тому, что есть, а проигрыш получил :)
Естественно тест на коленке и мапа на коленке.
Но в целом код по используемым методам идентичен методам, написанным в JDK 7 версии.
Видимо либо я что-то не понимаю, либо в целом то, что в 8 версии добавилось 1000 строк кода, сам не проверял, но в интернетах так пишут, наверное что-то да значит.
0
Сергей Тугаенко
11 декабря 2020, 15:27решение
При определенном количестве коллизий элементы с одинаковым хэшем кладутся уже не в стандартную Entry а в модифицированную TreeEntry (если название не путаю), у которой скорость доступа к элементам O (log n)
То есть эффективность выборки возростает. Плюс огромное значение играет качественная функция хэширования.
+3
Mike
11 декабря 2020, 16:42
Спасибо) Про TreMap и красно-черное дерево вроде в курсе.
п.с. дошел до 11го задания, тут как раз бихэшмэп, сейчас будем реализовывать и тестить))
0
Сергей Тугаенко
14 декабря 2020, 11:05
Успехов в решении.
На самом деле весьма интересная задача.
0
Mike
14 декабря 2020, 11:14
Спасибо. Да, задача действительно очень интересная и на мой взгляд полезная.
0