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

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

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

12 ответов

20 просмотров

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

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, тогда битвек будет не нужен

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Гайс, вопрос для разносторонее развитых: читаю стрим с юарта, нада выделять с него фреймы с определенной структурой, если ли чо готовое, или долбаться с ринг буффером? нада у...
Vitaly
9
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
длина пакета фиксированная, или меняется?
Okhsunrog
7
Карта сайта