Size: a a a

2020 November 19

W

Warstone in Modern::Perl
Мы считаем что так как изменение считчика ссылок это атомарная операция, то ее можно делать из нескольких потоков одновременно.
источник

W

Warstone in Modern::Perl
Заодно всем SV прописываем насильственную стрингификацию, чтобы перл не дай бог решил что перемнную надо стрингифичировать потом, после форка
источник

SZ

Sergey Zhmylove in Modern::Perl
Ну короче можно и так, и так. Это зависит от кода вокруг.
Если для получения data[3] тебе хочется использовать перловую конструкцию, то да. Если проект готов пойти на api convention и data[3] получать, например, так: get_value("data[3]"), тогда можно и как я предлагаю :)
источник

W

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

W

Warstone in Modern::Perl
И накладывает на разработчика обязательство обращаться только к конечным переменным, которые не хеш и не массив.
источник

W

Warstone in Modern::Perl
И нахуй убирает возможность пользоваться обхектам в словаре
источник

W

Warstone in Modern::Perl
типа $dict->{cool}{data}->accessor
источник

SZ

Sergey Zhmylove in Modern::Perl
Да, я со всем согласен
источник

SZ

Sergey Zhmylove in Modern::Perl
Но зато оно пишется за вечер :)
источник

W

Warstone in Modern::Perl
Нет
источник

W

Warstone in Modern::Perl
Так как я озвучал только 2 проблемы: рефкаунтер и стрингификация. А сколько их еще есть.
источник

SZ

Sergey Zhmylove in Modern::Perl
Warstone
Нет
Да почему нет? За вечер написать shm storage легко.
Вот, кстати, тоже интересный вариант: https://metacpan.org/pod/Hash::SharedMem
источник

W

Warstone in Modern::Perl
Ну это примерно то что ты описал
источник

W

Warstone in Modern::Perl
+-
источник

W

Warstone in Modern::Perl
Через get_value грубо говоря
источник

SZ

Sergey Zhmylove in Modern::Perl
Ну да
источник

SZ

Sergey Zhmylove in Modern::Perl
Т.е. мы пришли к тому, что можно: а) задолбаться и написать быстро, но с кучей проблем; б) взять готовое сразу и оно будет чуть помедленнее; в) забить на всё и тормозить на cow всего объекта после форка; г) как и «в», но заставить его сделать cow во время idle процесса
Последние два, очевидно, ещё и памяти кушают
источник

DF

Denis F in Modern::Perl
Warstone
Я про вообще идею форка ради сохранения памяти. Я на это натыкался... Допустим у нас есть словарик в перле. Метров на 500. Мы его зачитали, навесили всякое, что он только для чтения и форкнулись. Системный COW сказал ага и оставил только одну страницу, допустим... Однако, так как арена, грубо говоря, одна (допустим), то следущий my $a, попадает в ту-же страницу с нашей "readonly" памятью и COW копирует... Обращение к словарику, что-то типа: my $data = $dict->{cool}{data} - взводит счетчик внутри структуры SV, на единицу и COW копирует страницу... Короче в Перле все сделано так, чтобы послать системный COW нахуй и не экономить память.
так он вроде не для экономии форкает на старте, а чтобы в эвентлупе не вылезло чего-то из другого процесса. Я где-то у него читал про подводные камни тупого форкания AE, но где именно забыл уже.
источник

b

basiliscos in Modern::Perl
Рекламная пауза. Вот такую хрень писал https://metacpan.org/pod/IPC::LeaderBoard . Шарит только "строки" из интов м/у процессами, и не меняется в размере. Полноценные хэши, а ещё и блесснутые, шарить м/у процессами, анрил по сложности задача, и хз имеет ли решение.
источник

DF

Denis F in Modern::Perl
У тебя терминология ... эта ... забыл как называется, короче борцы за все хорошее осудят
# in slave processes
источник