172 похожих чатов

Если у меня есть вектор энумов enum X{

num(u64),
vec(Box<Y>)
}
и я хочу сэкономить память на тэг, имею ли я право сделать два вектора: один с тэгом (просто число 0/1), а во втором хранить юнионы?

12 ответов

6 просмотров

Была статья про такой подход в зиге

Artem- Автор вопроса
О. К
Была статья про такой подход в зиге

Да, я видел. С неё и подумал. Мне просто оч полезно было бы. Я б потом ещё тэги 0/1 упаковал в биты, и выиграл бы 2х по памяти

Это не стд буть осторожен

Если не будешь использовать repr(Rust), то можешь в теории. А иначе немного непонятно, как будет тег доставаться.

Тэг наверное в вектор, тогда экономия на отступе

Artem- Автор вопроса
Traveller Kolsky
Если не будешь использовать repr(Rust), то можешь ...

доступ по индеску. Т.е. типа я кладу в один вектор 0/1 в зависимости от типа данных. А во второй вектор - юнион. В итоге у меня вместо 16 байт энума выходит 8 байт и один бит за счёт BiteVec. Обратно чтение всегда по индексу - читаю тэг из вектора тэгов, читаю union через unsafe в нужном виде. У меня просто ооооооочень большие вектора, поэтому сэкономить на таком хочется.

О. К
Тэг наверное в вектор, тогда экономия на отступе

Если хотим паковать, надо знать значение тега, которое Discriminant не экспоузит

Traveller Kolsky
Если хотим паковать, надо знать значение тега, кот...

тут чел руками теги конструирет, без енумов, все ок будет

Mikail Bagishov
тут чел руками теги конструирет, без енумов, все о...

Смотря как внешнее взаимодействие будет работать

Фраза перед сегфолтом

О. К
Фраза перед сегфолтом

я другое имел в виду, но смешно вышло, соглы)

Кстати, можно чуть-чуть потерять переносимость и сократить num до u63, тогда битвек будет не нужен

Похожие вопросы

Обсуждают сегодня

А как старый хаскел с новым стыковать ? потому как тут работает https://play.haskell.org/saved/C3xpMzcd, а вот тут https://stepik.org/lesson/7602/step/9?unit=1473 нет ошибка C...
Fedor
131
Ребят, что лучше для реверса: гидра или ида?
En Vind Av Sorg
22
Вопрос я правильно понимаю что в коде newtype ArrowMap k v = ArrowMap { getArrowMap :: k -> Maybe v } getArrowMap есть функция типа k -> Maybe v, если да, то не понимаю задач...
Fedor
64
Делаю велосипед логгер. К сообщению хочу прикрутить некоторую информацию, типа, кем отправлено, какой уровень, и всякое такое. И тут подумалось мне, почему бы не хранить весь...
Serjone
24
Как Вы считаете нормально ли в двадцатых годах 21 века в ВУЗах Российской Федерации обучать студентов работе с TASM? Не слишком ли это "архаично"? (Если оффтоп или флейм для э...
Spiker01
52
Народ всем привет Подскажите, как включить самописные dll библиотеки в итоговую сборку Сейчас при запуске dev сервера локально формируется папка build, из которой запускается...
Андрей
4
Комрады, хотел уточнить. Проперть в OnDestroy юнита-хозяина по-прежнему доступна? И еще уточнение: finalization юнита наступает раньше или позже OnDestroy?
Ed Doc
48
Продолжая диалог про свифт в проде – сейчас возник вопрос в активном наборе бекендеров. В основном в нашей компании мы фанаты Java Spring и полностью ей довольны. Однако найм ...
Guseyn
27
Комрады, подскажите, в дельфях есть компоненты а-ля TDirectorySelect?
Ed Doc
15
а не подскажете вот это скрин из какой IDE ?
Iluha Companets
10
Карта сайта