Vladimir
В чем медленность?
Маjко
В выделении памяти на каждую мелкую фьючу например?
Маjко
То с чем боролись с помощью impl Trait
Αλεχ
перфомансно и идеоматично
Маjко
x)
Vladimir
Уже ж.давно научно доказано, что унбоксед кложур на практике не приносят производительности
Vladimir
Пруфов не будет
Маjко
x)
Vladimir
Но вроде даже была статья в смолл культ
Vladimir
Имхо, учитывая как много жемаллок делает для оптимизаций, не пользоваться боксами - грех
Vladimir
Немогу, он же ещё есть
Cat
представь, что он плод твоего воображения
Vladimir
Представьте что боксы тоже бесплатны
Маjко
Не могу
Vladimir
Zero cost
Маjко
Тот же aturon писал что боксить фьючи хуевая идея (или это был кричтон/withoutboats?)
Маjко
Потому что фьюч дохуя
Маjко
И забоксить одну-две наверху норм
Маjко
А все — пиздец персормасу
Vladimir
Они просто не шарят в хацперфоманс
Vladimir
Пишут свой игрушечный язык
Vladimir
Чего с них взять?
Cat
о каком зерокосте вы говорите /jerk
Vladimir
х)))
Vladimir
Чувак хочет какой-то харасмент с бороучекером
Vladimir
А вообще возьми пример с актикса, напиши из говна и палок, а потом исправляй
Vladimir
Кстати насчёт immovable разве фьюч это касается? Я думал больше генераторы/стримы?
Cat
там вроде это всё из одного котла берётся, что генераторы, что фьючи
Vladimir
Мне просто не понятно зачем фьючам наружу ссылку выкидывать
Vladimir
А генераторы обычно не "микрообьекты" можно и в бокс кинуть
Маjко
А генераторы обычно не "микрообьекты" можно и в бокс кинуть
Генератор держит контекст фьючи, то бишь ее стек. Точно так же как и сама фьюча.
Маjко
Они оверхеда особо не дают
Маjко
Сами по себе
Маjко
Ну и еще напомню про платформы no_std
Маjко
Где фьючи — оч удобная хуйня для организации кооперативной многозадачности искаропки
Vladimir
Ну держит он контекст фьючи и что? Я про то, что фьюча поидее любая не может ссылаться на свой стек, так как не может прерываться и возвращать часть результата, или нет?
Маjко
Фьюча нет
Маjко
В этом и смысл генератора
Маjко
Он может ссылаться на себя
Vladimir
Вот, а генератор ты не создаёшь на каждый чих
Маjко
*статья про то что раст скатился из-за специализированных языковых решений, а не общих*
Vladimir
От того какие проблемы запихать его в бокс?
Маjко
Vladimir
Падажи, я про инстанцирование, а не про описание
Маjко
Надо матчасти надыбать
Vladimir
Мы ж про накладные расходы
Маjко
Падажи, я про инстанцирование, а не про описание
Ну где описание там и инстанциирование) Юзаешь async fn — получаешь инстанс генератора
Vladimir
Вот, но генераторы это долгоживущий процесс обычно
Vladimir
Например обработка tcp коннекта
Vladimir
Или другого источника информации
Vladimir
И тут не будет аллока-диаллока на каждый чих
Маjко
Я могу херачить сколько угодно асинхронных функций
Маjко
Для разделения шагов обработки
Маjко
Если для каждой инстанс генератора где-то в памяти лежит
Маjко
Инвалидация кэша по кд будет
Маjко
Это не то же самое что лежащие рядом на стеке фьючи
Vladimir
Примеры из практики будут?
Маjко
Тебе сложно представить ситуацию, где ты не херачишь 200 строк кода в одну асинхронную функцию, а разносишь ее на кучу мелких и в основном хэндлере инвокаешь через await?
Cat
опять недостаток щелочной среды
Vladimir
Та могу я представить, просто я это представляю себе так: есть Мейн генератор который создаёт некий объект, и борроуит его дочерним, которые работают ссылкой и продюсят бороу от этой ссылки.
Vladimir
Ну и Мейн лежит в боксе
Vladimir
Остальные нет
Маjко
Итого: у нас есть 2 разных домысла о том как это будет работать
Маjко
И что-то мне подсказывает что генераторы не будут инлайниться, а будут создаваться на каждую функцию (и не факт что они будут ресетиться и реюзаться, а не деаллоцироваться после завершения асинхронной функции)
Маjко
Спеку бы почитать подробную
Маjко
Но ее нет
Vladimir
Ну реюзать память - это уже к алокатору. А инлайнить же нам обещали, зирокост же
Маjко
Посмотри во что это сейчас разворачивается в futures-await
Vladimir
Типа все развернется в метч
Маjко
Чисто по выхлопу макроса там по генератору на вызов
Маjко
Но сейчас они на стеке
Маjко
И нельзя борровить
Vladimir
Посмотри во что это сейчас разворачивается в futures-await
Он во что-то разворачивается? Я думал генератор нельзя посмотреть как развернется