Size: a a a

2021 January 22

OP

Oleg Pronin in Modern::Perl
Пример массив на миллион элементов чисел. Создали. 110 мегов сьело. Сделали undef @array - 8 мегабайт отдало в систему (SV** массив на 1млн указателей)
источник

OP

Oleg Pronin in Modern::Perl
Ну это под дебагером, без него меньше чем 110 сьест, но отдаст все равно 8
источник

OP

Oleg Pronin in Modern::Perl
Хеш больше отдаст
источник

OP

Oleg Pronin in Modern::Perl
Тоже самое со строками. Создали гиг строку сьело. Убили - отдало в систему (за минусом структуры sv и pv)
источник

OP

Oleg Pronin in Modern::Perl
Тока убивать через undef надо иначе оно оставит капасити на случай если вдруг новое будут заносить
источник

VG

Vadim Goncharov in Modern::Perl
Oleg Pronin
Пример массив на миллион элементов чисел. Создали. 110 мегов сьело. Сделали undef @array - 8 мегабайт отдало в систему (SV** массив на 1млн указателей)
O_o а как прибивать такие SV ?
источник

OP

Oleg Pronin in Modern::Perl
Сами sv никак. Оно прибивает тока внутренние массивы указателей, строки И так далее
источник

OP

Oleg Pronin in Modern::Perl
Когда ты создал массив на миллион элементов он делает там
malloc(sizeof(SV*)*1M)
Плюс миллион newSV
Вот первое в систему вернется а второе нет
источник

VG

Vadim Goncharov in Modern::Perl
Oleg Pronin
Сами sv никак. Оно прибивает тока внутренние массивы указателей, строки И так далее
то есть со временем программа неустранимо начнет течь?
источник

OP

Oleg Pronin in Modern::Perl
Это не утечка технически. У тебя на арене свободные миллион sv. Следующие миллион newsv ничего не выделят в системе
источник

OP

Oleg Pronin in Modern::Perl
Но да программа меньше уже не займет никогда
источник

VG

Vadim Goncharov in Modern::Perl
а, тогда ладно
источник

OP

Oleg Pronin in Modern::Perl
У нас когда то был оффлайн скрипт ночной который выбирал в покере в базе все записи игр за день и анализировал ища мошенников. Все эти данные занимали много гигов (50 миллионов игр в день). Покусочно незя, обработка требовала наличия всего. Так вот выбрав их один раз ты весил кучу гигов. А дальше шел анализ по уже уменьшенным данным, а те грохнули, и все равно ты весишь стокаже. Выборка быстрая относительно. Анализ долгий и все это время на машине памяти мало оставалось. Решили это так: форканулись чайлд выбрал, предобраьотал скомпактил, вернул в парента пайпом и сдох чтоб память отпустить. По другому никак((
источник

OP

Oleg Pronin in Modern::Perl
Сейчас он из базы выбирает и сразу в XS передает чанками. Там все это в сумме в 50 раз меньше памяти жрет. И проблема ушла
источник

OP

Oleg Pronin in Modern::Perl
К слову, поведение перла не является чем то особенным. Почти любой кастомный fixed-size аллокатор себя так ведет.
источник

OP

Oleg Pronin in Modern::Perl
Чтобы отдавать назад в систему надо перемещать обьекты к началу (дефрагать) это незя делать потому что в коде куча указателей поедут. Для этого нужно вводить косвенную адресацию, что неминуемо скажется на скорости рантайма
источник

IA

Ivan Avseyanko in Modern::Perl
Александр Поволоцкий
Здесь есть человек, которого осмысленно спросить про OAuth об Гугла?
А в чём вопрос?
источник

АП

Александр Поволоцкий... in Modern::Perl
Ivan Avseyanko
А в чём вопрос?
Делаю я ее через firebaseui на фронте - все работает (хотя в какое-то жуткое количество редиректов, и не выводится список возможных логинов, но как бы и хусим пока)
Делаю ее через OAuth на бэке - все прекрасно, получается idToken... но хрен мне по всей роже отдают, вместо данных клиента.
источник

IA

Ivan Avseyanko in Modern::Perl
Александр Поволоцкий
Делаю я ее через firebaseui на фронте - все работает (хотя в какое-то жуткое количество редиректов, и не выводится список возможных логинов, но как бы и хусим пока)
Делаю ее через OAuth на бэке - все прекрасно, получается idToken... но хрен мне по всей роже отдают, вместо данных клиента.
Так там два ключа есть, один временный и одноразовый - для получения постоянного токена, а второй - уже постоянный токен, с которым можно спросить что-то о пользователе.
источник

IA

Ivan Avseyanko in Modern::Perl
Flow при авторизации с клиента и на server side немного разный.
источник