Size: a a a

2020 April 05

DS

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

DS

Doge Shibu in rust_offtopic
В то время как гц всё это делает массово во время сборки
источник

СД

Стас Донцов... in rust_offtopic
я так понял ключевое здесь то, что он делает это параллельно в соседнем потоке
источник

СД

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

DS

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

СД

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

СД

Стас Донцов... in rust_offtopic
а раст, он каждый раз дергает маллок/free когда создается/заканчивается время жизни у переменной? или там есть оптимизации какие-то?
источник

DS

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

СД

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

DS

Doge Shibu in rust_offtopic
Стас Донцов
а раст, он каждый раз дергает маллок/free когда создается/заканчивается время жизни у переменной? или там есть оптимизации какие-то?
Ну в расте если не используешь Box, Rc, Arc, Vec и т.п., то у тебя обычно всё сидит на стеке
источник

DS

Doge Shibu in rust_offtopic
Стас Донцов
ну да, когда ты херачишь имьютабл листы с дохреналионами данных в фп-лайк стиле
Не обязательно прям ФП, средний код на джаве себя точно так же ведёт
источник

СД

Стас Донцов... in rust_offtopic
Doge Shibu
Ну в расте если не используешь Box, Rc, Arc, Vec и т.п., то у тебя обычно всё сидит на стеке
ну стек не резиновый, да и опять же, верно то, что на стек не пложить список из 1кк интов?
источник

СД

Стас Донцов... in rust_offtopic
и верно я понимаю, что посыл в том что надо использовать стек, чтобы избежать лишней работы с маллоком и освобождением?
источник

DS

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

DS

Doge Shibu in rust_offtopic
Тебе для такого придется как раз выделять в куче
источник

DS

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

СД

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

а

а это кто in rust_offtopic
Alexander Krivitskiy
Так это скоуп в расте задаёт. Лишняя писанина получится, да и всё.

{
  data = mutex.lock();
}

vs

with mutex.lock() as data {

}

Хотя мне по отступам больше второй вариант нравится
источник

DS

Doge Shibu in rust_offtopic
Стас Донцов
ну у меня пока трудности в понимании когда объект будет создан в стеке, а когда в куче
В расте любой структ и энам по умолчанию создаётся на стеке.

В куче он создается через Box или явный unsafe вызов аллокатора
источник

СД

Стас Донцов... in rust_offtopic
Doge Shibu
В расте любой структ и энам по умолчанию создаётся на стеке.

В куче он создается через Box или явный unsafe вызов аллокатора
а остальное, инты, массивы?
источник