Size: a a a

2020 January 11

VO

Vyacheslav Olkhovchenkov in Modern::Perl
голое железо не я первый помянул
источник

AP

Anton Petrusevich in Modern::Perl
ладно, я в любом случае потерялся
источник

VO

Vyacheslav Olkhovchenkov in Modern::Perl
я только сказал что мало кто задумывается что с одним значением хэш-бакета может быть дофига разных элементов.
источник

AP

Anton Petrusevich in Modern::Perl
Vyacheslav Olkhovchenkov
я только сказал что мало кто задумывается что с одним значением хэш-бакета может быть дофига разных элементов.
я не спорил и даже скорее подтвердил это
источник

VO

Vyacheslav Olkhovchenkov in Modern::Perl
даже в случае если хэш-бакетов примерно равно количеству улементов к хэше. причем дофига -- это порядка 8, что ли, не помню уже
источник

AP

Anton Petrusevich in Modern::Perl
я тестировал перловый хеш. его функция очень мало коллизий даёт, поэтому количество бакетов растёт по степеням двойки от числа элементов
источник

VO

Vyacheslav Olkhovchenkov in Modern::Perl
приведенная мной цифра -- это для такого случая
источник

AP

Anton Petrusevich in Modern::Perl
т.е. когда количество элементов превышает очередную степень двойки, то хеш перестраивается на следующую
источник

AT

Artem Tepponen in Modern::Perl
Да нарисуйте вы микробенчи и померяйтесь
источник

AP

Anton Petrusevich in Modern::Perl
зачем? я уже всё для себя выяснил
источник

VO

Vyacheslav Olkhovchenkov in Modern::Perl
вот тут правильно не бенчи, а мат анализ. но он сложный, да.
источник

AT

Artem Tepponen in Modern::Perl
Что хэш медленне массива? ))
источник

VO

Vyacheslav Olkhovchenkov in Modern::Perl
я -- про количество коллизий.
источник

AP

Anton Petrusevich in Modern::Perl
вот мы тут в большинстве своём уже все сеньоры, а всё равно было о чёмо поговрить/поспорить. так что я не вижу ничего плохого в поднятии этого вопроса на собеседовании хоть для джуна, хоть для сеньора
источник

VO

Vyacheslav Olkhovchenkov in Modern::Perl
а вот кстати, интересный вопрос. (может и не про перл). если у нас число строкой задется -- что быстрее будет -- atoi и по индексу и хэш-функцию и из хэша?
источник

VO

Vyacheslav Olkhovchenkov in Modern::Perl
число будем считать достаточно большим (длинным)
источник

AT

Artem Tepponen in Modern::Perl
А это зависит

# /bin/time perl -le 'for my $j (1e9..1e9+100) { my @a; for(my $i = 0;$i < 100000; ++$i) { $a[rand()*1e8] = $i } }'
14.86user 0.04system 0:14.91elapsed

/bin/time perl -le 'for my $j (1e9..1e9+100) { my %h; for(my $i = 0;$i < 100000; ++$i) { $h{rand()*1e8} = $i } }'
9.71user 0.01system 0:09.72elapsed
источник

AP

Anton Petrusevich in Modern::Perl
Vyacheslav Olkhovchenkov
а вот кстати, интересный вопрос. (может и не про перл). если у нас число строкой задется -- что быстрее будет -- atoi и по индексу и хэш-функцию и из хэша?
видимо, не про перл. функция atoi примерно сравнима, скорее всего, с функцией вычисления хеша. но сам способ хранения массива даёт преимущества
источник

VO

Vyacheslav Olkhovchenkov in Modern::Perl
ну вот все же не совсем сравнима. всяких ветвлений поболее будет
источник

VO

Vyacheslav Olkhovchenkov in Modern::Perl
а дальше уже ньюансы, да...
источник