Size: a a a

2021 January 24

VG

Vadim Goncharov in Modern::Perl
json, например, у тебя никак не будет очень коротким
источник

a

allter in Modern::Perl
Json это конечное/начальное представление. Что бы его собрать/распарсить обычно нужны строки поменьше. Если речь о сервере, использующем асинхронную работу с запросами, они будут размещаться где попало. Так что то, о чем говорит Олег, вполне распространено.

К слову, размещать конечные/начальные документы > 1 МБ в памяти плохо, т.к. в перле есть оптимизация для не деаллокации временных строк. Но с другой стороны, эти начальные/конечные представления в процессе размещаются в одних и тех же переменных. Так что то, о чем говорит Олег - более критично
источник

OP

Oleg Pronin in Modern::Perl
Vadim Goncharov
как уже было сказано, типичный перловый процесс, будь он сервером или нет, работает с БД или сокетами
Ровно это и пораждает кучу чисел и коротких строк. Json существует в памяти временно, парсится и изчезает, он не накапливается тысячами от разных юзеров, а результат его декода как раз хранится.
источник

VO

Vyacheslav Olkhovche... in Modern::Perl
лучше скажите, можно ли как-то из массива передать в функцию не более k элементов?
ну т.е. что-то типа f(@array[$base .. $base+$k]);?

но вот в таком варианте если массив кончается раньше, то во-первых передаются undef вместо отсутсвующих, а во-вторых сам массив увеличивается.
источник

OP

Oleg Pronin in Modern::Perl
..($base+$k > $#array ? .. : .. )
источник

VG

Vadim Goncharov in Modern::Perl
Oleg Pronin
Ровно это и пораждает кучу чисел и коротких строк. Json существует в памяти временно, парсится и изчезает, он не накапливается тысячами от разных юзеров, а результат его декода как раз хранится.
лол, зачем ему храниться?
источник

VO

Vyacheslav Olkhovche... in Modern::Perl
не, ну понятно что можно обложиться проверками и поправками, а как-то покрасивей?
источник

VG

Vadim Goncharov in Modern::Perl
можешь попробовать на splice что-нибудь навертеть
источник

VO

Vyacheslav Olkhovche... in Modern::Perl
splice оригинал корежит, мне это не надо.
источник

SZ

Sergey Zhmylove in Modern::Perl
Vyacheslav Olkhovchenkov
лучше скажите, можно ли как-то из массива передать в функцию не более k элементов?
ну т.е. что-то типа f(@array[$base .. $base+$k]);?

но вот в таком варианте если массив кончается раньше, то во-первых передаются undef вместо отсутсвующих, а во-вторых сам массив увеличивается.
List::Util::head
источник

SZ

Sergey Zhmylove in Modern::Perl
@PerlBanjoBot use List::Util qw(head tail); my ($base, $k) = (3, 5); say for head $k, tail -$base, 1..10;
источник

P

PerlBanjoBot in Modern::Perl
Sergey Zhmylove
@PerlBanjoBot use List::Util qw(head tail); my ($base, $k) = (3, 5); say for head $k, tail -$base, 1..10;
источник

VO

Vyacheslav Olkhovche... in Modern::Perl
не, я хотел взять 10 с 8 и получить только (8,9,10) а не как сейчас выходит (8,9,10,,,,,,)
источник

VO

Vyacheslav Olkhovche... in Modern::Perl
а насколько эффективно будет конструкция
sub f {
 my ($item, @array) = @_;
 ....
}
для вызовов типа f('xxx', @list); ?
источник

OP

Oleg Pronin in Modern::Perl
Также как если бы и не было массивов
источник

OP

Oleg Pronin in Modern::Perl
Это все через стек передается
источник

OP

Oleg Pronin in Modern::Perl
Все равно что руками передать поэлементно
источник

OP

Oleg Pronin in Modern::Perl
Если есть возможность референсами передавай
источник

VO

Vyacheslav Olkhovche... in Modern::Perl
т.е. аласинга тут не будет?
источник

VG

Vadim Goncharov in Modern::Perl
если ты будешь обращаться как $_[1] - будет
источник