Size: a a a

2020 January 11

TZ

Troll Zhuravlev in Modern::Perl
так намного логичнее и только так массивы юзают обычно )
источник

AP

Anton Petrusevich in Modern::Perl
Troll Zhuravlev
а кто тебе мешает засирать его последовательно
$a[$i] = rand()*1e9
?
да пофиг. главное чтобы сначала память выделил и не вносил это в бенч :)
источник

AP

Anton Petrusevich in Modern::Perl
anton@homework:~$ time perl -le 'my @a; $a[1e9] = undef; for my $j (1e9..1e9+100) { for(my $i = 0;$i < 10000; ++$i) { $a[rand()*1e9] = $i } }'

real    0m4,432s
user    0m1,783s
sys     0m2,580s
anton@homework:~$ time perl -le 'for my $j (1e9..1e9+100) { my %h; for(my $i = 0;$i < 100000; ++$i) { $h{rand()*1e9} = $i } }'

real    0m10,432s
user    0m10,407s
sys     0m0,008s
anton@homework:~$ time perl -le 'my @a; for my $j (1e9..1e9+100) { for(my $i = 0;$i < 10000; ++$i) { $a[rand()*1e9] = $i } }'

real    0m4,696s
user    0m1,886s
sys     0m2,584s
источник

AP

Anton Petrusevich in Modern::Perl
но, это реально странный бенч
источник

TZ

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

AP

Anton Petrusevich in Modern::Perl
"пофиг" в смысле мне :)
источник

TZ

Troll Zhuravlev in Modern::Perl
можно вооюще push юзать будет еще быстрее
источник

AT

Artem Tepponen in Modern::Perl
perl какой версии? А то "оптимизированная" пока работает
источник

AP

Anton Petrusevich in Modern::Perl
5.22 у меня в брю
источник

TZ

Troll Zhuravlev in Modern::Perl
у меня 5.18 чистый
источник

AT

Artem Tepponen in Modern::Perl
5.16, из CentOS 7.7
источник

AT

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

AP

Anton Petrusevich in Modern::Perl
долго что то.
источник

AP

Anton Petrusevich in Modern::Perl
у меня под рукой 5.22 и 5.26, без особой разницы
источник

TZ

Troll Zhuravlev in Modern::Perl
time perl -le 'my @a; for my $j (1e9..1e9+100) { for(my $i = 0;$i < 10000; ++$i) { $a[$i] = rand()*1e9 } }'

real  0m0,292s
user  0m0,283s
sys  0m0,004s
источник

TZ

Troll Zhuravlev in Modern::Perl
time perl -le 'for my $j (1e9..1e9+100) { my %h; for(my $i = 0;$i < 100000; ++$i) { $h{rand()*1e9} = $i } }'

real  0m43,176s
user  0m40,898s
sys  0m0,230s
источник

TZ

Troll Zhuravlev in Modern::Perl
time perl -le 'for my $j (1e9..1e9+100) { my %h; for(my $i = 0;$i < 100000; ++$i) { $h{$i} = rand()*1e9 } }'

real  0m21,365s
user  0m20,042s
sys  0m0,151s
источник

AP

Anton Petrusevich in Modern::Perl
anton@homework:~$ time perl -le 'my @a; $a[1e9] = undef; for my $j (1e9..1e9+100) { for(my $i = 0;$i < 100000; ++$i) { $a[rand()*1e9] = $i } }'

real    0m7,077s
user    0m5,145s
sys     0m1,921s

показалось, что число во внутреннем цикле отличается, сделал его таким же как у хеша. смотреть надо время "юзер". как я и говорил, оно в два раза ниже, чем для хеша
источник

AT

Artem Tepponen in Modern::Perl
на CentOS 8 perl 5.26 (на машинке раза в 2 медленнее чем предыдущее)

# /bin/time perl -le 'for my $j (1e9..1e9+100) { my @a; $a[1e9] = undef; for(my $i = 0;$i < 10000; ++$i) { $a[rand()*1e9] = $i } }'
160.41user 0.82system 2:42.76elapsed
источник

AT

Artem Tepponen in Modern::Perl
Что-то странное, или у меня, или..
источник