Size: a a a

2020 January 11

AP

Anton Petrusevich in Modern::Perl
вариант — у тебя не хватило рам :)
источник

AT

Artem Tepponen in Modern::Perl
А! my @a внутри или вне цикла!
источник

AT

Artem Tepponen in Modern::Perl
RAM дофига, процесс жрет всего 8G
источник

AP

Anton Petrusevich in Modern::Perl
Artem Tepponen
А! my @a внутри или вне цикла!
а, ну да, реаллокации
источник

AT

Artem Tepponen in Modern::Perl
Тут-то собака и порылась
источник

AT

Artem Tepponen in Modern::Perl
# /bin/time perl -le 'my %h; $a[1e9] = undef; for my $j (1e9..1e9+100) { for(my $i = 0;$i < 100000; ++$i) { $h{rand()*1e9} = $i } }'
20.95user 1.23system 0:22.26elapsed
источник

AP

Anton Petrusevich in Modern::Perl
твой вариант с массивом внутри фора у меня исполнялся 102 сек
источник

AT

Artem Tepponen in Modern::Perl
Ну в общем результат наверное понятен - если в кэш проца не лезет, то хэш выходит даже быстрее, ибо память - медленная. Или я не прав?
источник

AP

Anton Petrusevich in Modern::Perl
нет
источник

AP

Anton Petrusevich in Modern::Perl
твой шаблон очевидно не предназначен для массивов
источник

AP

Anton Petrusevich in Modern::Perl
проблема именно в этом.
источник

AT

Artem Tepponen in Modern::Perl
Для любой задачи можно сделать бенч, где будет нужный результат ))
источник

AT

Artem Tepponen in Modern::Perl
Кто-нибудь сможет написать на перле выражение (с числами!), где +0 изменит результат? На 5.10 точно работало
источник

AP

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

TZ

Troll Zhuravlev in Modern::Perl
Артем, можешь привести кейс, где будет использоваться подобие
$a[rand()*1e9] = ..
?
источник

TZ

Troll Zhuravlev in Modern::Perl
при условии, что нужного индекса нет
источник

AP

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

AP

Anton Petrusevich in Modern::Perl
что скорость доступа к массиву в два раза быстрее — показал мой вариант с выносом массива наружу циклов
источник

AT

Artem Tepponen in Modern::Perl
Я даже не собираюсь спорить, что доступ к элементу массива - быстрее.
источник

AP

Anton Petrusevich in Modern::Perl
массив из миллиарда элементов аллоцировать, а потом деаллоцировать вунтри цикла — тут собака и окопалась
источник