Size: a a a

2020 December 23

SZ

Sergey Zhmylove in use Perl or die;
Мой косяк. Хмм, странно
источник

АК

Алексей Клименко... in use Perl or die;
Vadim Goncharov
нет, до опечатки всё верно было
Обычно я в другую сторону эту опечатку делаю, видимо как раз приноровился перестать.

(А ещё есть «модно» вместо «можно»).
источник

IB

Ivan Bessarabov in use Perl or die;
Ради интереса написал очень простые замеры скорости массива и хеша. Бенчмарк очень искусственный. У меня получается что массив в 10 раз быстрее чем хеш. (несколько раз просмотрел код который я написал — вроде, явных косяков нет)

* запись — https://gist.github.com/bessarabov/2eabb33b162cc11bad97c2ccf9e6f2e4
* чтение — https://gist.github.com/bessarabov/ac4fe3562536118f2ec3b75f808be26f

Я слабо верю в синтетические тесты. Нужно замерять работу реального приложения и тюнить его (если конечно есть смысл тюнить, может быть этот скрипт вообще запускется один раз в день по крону — не важно, отработает ли он за секунду или за 15 минут)
источник

АК

Алексей Клименко... in use Perl or die;
Ну не, у вас массив слишком уж последовательный!
источник

АК

Алексей Клименко... in use Perl or die;
Нужно разряженный (скажем, 1000 из 0...9999) и в случайном порядке.
источник

SZ

Sergey Zhmylove in use Perl or die;
Ivan Bessarabov
Ради интереса написал очень простые замеры скорости массива и хеша. Бенчмарк очень искусственный. У меня получается что массив в 10 раз быстрее чем хеш. (несколько раз просмотрел код который я написал — вроде, явных косяков нет)

* запись — https://gist.github.com/bessarabov/2eabb33b162cc11bad97c2ccf9e6f2e4
* чтение — https://gist.github.com/bessarabov/ac4fe3562536118f2ec3b75f808be26f

Я слабо верю в синтетические тесты. Нужно замерять работу реального приложения и тюнить его (если конечно есть смысл тюнить, может быть этот скрипт вообще запускется один раз в день по крону — не важно, отработает ли он за секунду или за 15 минут)
Ты посмотри, сколько раз за один проход sub hash он у тебя пересоздавал хеш и всё поймёшь, ящитаю :)
источник

IB

Ivan Bessarabov in use Perl or die;
Алексей Клименко
Нужно разряженный (скажем, 1000 из 0...9999) и в случайном порядке.
Попробовал. У меня получается что в такой ситуации запись в массив в 10 раз быстрее чем запись в хеш, а чтение из массива в 2 раза быстрее чем чтение из хеша

* https://gist.github.com/bessarabov/4f6f7fd23cf447941072dad3165498aa
* https://gist.github.com/bessarabov/9c4c7d996898df044df5b90406f1da08

Если возможно — давайте на "ты"?
источник

АК

Алексей Клименко... in use Perl or die;
Кстати реально, вынесите хеш за функцию, чтобы он не пересоздавался каждый раз!
источник

АК

Алексей Клименко... in use Perl or die;
(С другой стороны, мы будем бить по одним и тем же элементам…)
источник

IB

Ivan Bessarabov in use Perl or die;
Sergey Zhmylove
Ты посмотри, сколько раз за один проход sub hash он у тебя пересоздавал хеш и всё поймёшь, ящитаю :)
ты предлагаешь делать keys(%h) = 1000; ? — я попробовал, разницы не увидел.
источник

АК

Алексей Клименко... in use Perl or die;
По-честному, надо не в хеш, а в хешреф толкать.
источник

SZ

Sergey Zhmylove in use Perl or die;
Ivan Bessarabov
ты предлагаешь делать keys(%h) = 1000; ? — я попробовал, разницы не увидел.
Не, я предлагаю распечатать его :р
источник

IB

Ivan Bessarabov in use Perl or die;
ммм
источник

IB

Ivan Bessarabov in use Perl or die;
не понимаю тебя
источник

IB

Ivan Bessarabov in use Perl or die;
распечатал, похоже на то что я ожидал там увидеть
источник

IB

Ivan Bessarabov in use Perl or die;
источник

SZ

Sergey Zhmylove in use Perl or die;
Ivan Bessarabov
распечатал, похоже на то что я ожидал там увидеть
print scalar %hash
источник

АК

Алексей Клименко... in use Perl or die;
Ну внутри одного выполнения функции – адрес хеша разве изменится?
источник

IB

Ivan Bessarabov in use Perl or die;
Sergey Zhmylove
print scalar %hash
Разверни, мысль, пожалуйста. Я не понимаю тебя.

написал

       hash => sub {
           my %h;

           keys(%h) = 1000;

           foreach my $i (@indexes) {
               $h{$i} = $i;
           }
           warn scalar %h;
       },


это выводит кучу строк вида

945 at perl_benchmark_array_hash_write.pl line 32.
945 at perl_benchmark_array_hash_write.pl line 32.
945 at perl_benchmark_array_hash_write.pl line 32.
945 at perl_benchmark_array_hash_write.pl line 32.
945 at perl_benchmark_array_hash_write.pl line 32.
945 at perl_benchmark_array_hash_write.pl line 32.
945 at perl_benchmark_array_hash_write.pl line 32.
источник

АК

Алексей Клименко... in use Perl or die;
Интересно.

Так он же…
источник