Size: a a a

2020 April 05

AZ

Alex Zhukovsky in rust_offtopic
взял указатель на объект в расте, а его "дефрагментировали" и указатель превратился в тыкву
источник

DS

Doge Shibu in rust_offtopic
Стас Донцов
а поч это не вшито в раст? ну казалось бы маст хэв
https://crates.io/crates/bumpalo

Потому что зачем вшивать такое конкретно, если проще добавить поддержку кастомных аллокаторов в стандартные коллекции.

Проблема только в том, что воз и ныне там
источник

СД

Стас Донцов... in rust_offtopic
Alex Zhukovsky
взял указатель на объект в расте, а его "дефрагментировали" и указатель превратился в тыкву
ну так ведь у нас как раз механизм времени жизни есть: он превратился в тыкву, значит можно сообщить об этом аллокатору, чтобы он что-то сделал, нет?
источник

DS

Doge Shibu in rust_offtopic
Стас Донцов
ну так ведь у нас как раз механизм времени жизни есть: он превратился в тыкву, значит можно сообщить об этом аллокатору, чтобы он что-то сделал, нет?
А как аллокатор знает, кто имеет ссылку на этот объект?
источник

DF

Dollar Føølish in rust_offtopic
В крестах такая пляска с этими аллокаторами в стд коллекциях. Там очень много ньюансов
источник

DS

Doge Shibu in rust_offtopic
Единственное, что ты можешь сделать - это как в этом же бампалло, тупо освободить всю память при выходе из региона, а юзер пусть сам оттуда мувит то, что ему интересно
источник

DF

Dollar Føølish in rust_offtopic
Например если у тебя скоупд аллокатор для мапы то он может не совпадать с аллокатором стринги которую ты туда пихаешь и все пизда копирование
источник

DF

Dollar Føølish in rust_offtopic
Ещё бывает так что неправильно напишешь и у тебя поиск по мапе забивает арену
источник

DF

Dollar Føølish in rust_offtopic
Казалось бы простой поиск
источник

СД

Стас Донцов... in rust_offtopic
Doge Shibu
А как аллокатор знает, кто имеет ссылку на этот объект?
если ты про убитый объект, то от него уже отказались и он не нужен, как и ссылка на него, если же про тот объект который будет перемещен в вакантную дырку созданную после убитого объекта, то да, нужна какая-то ссылка которая будет для других кусков кода неизменчива, но эта сслыка просто указывает на реальный блок памяти и таким образом направляет в него, как виртуальная память процесса, аллокатор переместит объект и обновит эту парную ссылку на новое место
источник

СД

Стас Донцов... in rust_offtopic
ну и да, это видимо какой-то рантайм и походу я описал примитивнейший гц
источник

DS

Doge Shibu in rust_offtopic
Стас Донцов
если ты про убитый объект, то от него уже отказались и он не нужен, как и ссылка на него, если же про тот объект который будет перемещен в вакантную дырку созданную после убитого объекта, то да, нужна какая-то ссылка которая будет для других кусков кода неизменчива, но эта сслыка просто указывает на реальный блок памяти и таким образом направляет в него, как виртуальная память процесса, аллокатор переместит объект и обновит эту парную ссылку на новое место
Ок, теперь следующий вопрос, а в какой момент у тебя аллокатор будет дефрагментацией заниматься?

Потому что сейчас ты изобретаешь достаточно большой кусок гц.
источник

DF

Dollar Føølish in rust_offtopic
Верно
источник

СД

Стас Донцов... in rust_offtopic
Doge Shibu
Ок, теперь следующий вопрос, а в какой момент у тебя аллокатор будет дефрагментацией заниматься?

Потому что сейчас ты изобретаешь достаточно большой кусок гц.
не знаю, мне кажется нужна ручка которой можно говорить когда дефрагментировать: в зависимости от частоты/размера записываемого объекта
источник

СД

Стас Донцов... in rust_offtopic
это как: напишу код, посмотрю какие объекты в нем создаются убиваются, потом оптимизирую под них аллокатор
источник

NM

Nigga Melon in rust_offtopic
Anton 📦 ᯌ
GetText() как реализован? мож не в парсере проблема?
Он берет весь текст с начаоа промежутка(тэга) до его конца
источник

СД

Стас Донцов... in rust_offtopic
Doge Shibu
Ок, теперь следующий вопрос, а в какой момент у тебя аллокатор будет дефрагментацией заниматься?

Потому что сейчас ты изобретаешь достаточно большой кусок гц.
ну или не знаю, просто хранить таблицу/дерево с указанием свободных блоков, чтобы не бегать через маллок по всей памяти, а ьегать по таблице, что наверное дешевле будет: нужно тебе два байта, ты знаешь где они есть, нужно 2 Мб, ты тоже знаешь где они есть
источник

СД

Стас Донцов... in rust_offtopic
модет даже и дешевле дефрагментации будет
источник

DS

Doge Shibu in rust_offtopic
Стас Донцов
ну или не знаю, просто хранить таблицу/дерево с указанием свободных блоков, чтобы не бегать через маллок по всей памяти, а ьегать по таблице, что наверное дешевле будет: нужно тебе два байта, ты знаешь где они есть, нужно 2 Мб, ты тоже знаешь где они есть
Так маллок так и делает примерно
источник

СД

Стас Донцов... in rust_offtopic
Doge Shibu
Так маллок так и делает примерно
и даже благодаря этому выделение памяти всеравно в каких-то случаях бывает хуже чем у гц?
источник