|
Битовое поле плюсы и минусы
|
|||
---|---|---|---|
#18+
Доброго времени суток, Прошу совета у опытных людей, можете объяснить в чем плюсы и минусы храненния свойств класса в битовом поле. Есть класс у него допустим 30 полей, мне нужно добавить еще 10 и все они имеют тип boolean, я бы хотел засунуть их в битовое поле и хранить там, на бэке эти поля только хранятся в модели. А вся логика по тому чтобы разобрать что там лежит находится во фронте. Надеюсь понятно объяснил. Почему возник вопрос. Я прикладной программист и дорабатываю ПО от одной галеры через их sdk для конкретного клиента, и вижу что у них иногда возникают похожие ситуации и они всегда добавляют 10 boolean полей к классу, вместо добавления 1 поля с битовым полем и хранения всех данных в нем. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2020, 11:45 |
|
Битовое поле плюсы и минусы
|
|||
---|---|---|---|
#18+
redsunrise Доброго времени суток, Прошу совета у опытных людей, можете объяснить в чем плюсы и минусы храненния свойств класса в битовом поле. Есть класс у него допустим 30 полей, мне нужно добавить еще 10 и все они имеют тип boolean, я бы хотел засунуть их в битовое поле и хранить там, на бэке эти поля только хранятся в модели. А вся логика по тому чтобы разобрать что там лежит находится во фронте. Надеюсь понятно объяснил. Почему возник вопрос. Я прикладной программист и дорабатываю ПО от одной галеры через их sdk для конкретного клиента, и вижу что у них иногда возникают похожие ситуации и они всегда добавляют 10 boolean полей к классу, вместо добавления 1 поля с битовым полем и хранения всех данных в нем. Я так понимаю вопрос в принципе больше теоретический? Чем проще код, тем проще его поддерживать и развивать, это тебе не C++ и драйверы. BitSet предпочтителен только в двух случаях - перфоманс по расходу памяти(допустим у тебя миллиард этих объектов и тебе надо гонять все это по сети, тут конечно битсет будет в тему), перфоманс в каких-нибудь хитрых многопоточных алгоритмах, когда много булеанов не влезет в один кэш лайн, а биткарта влезет - но это тоже такое себе, только в крайнем случае. Ну еще некоторые алгоритмы аля BloomFilter могут использовать битсеты, но опять же ты говоришь что ты прикладник В целом - можешь конечно изучить матчасть, это всегда полезно но в 99.999% это тебе просто не понадобится. Если же твой случай - добиться латенси 100 мс вместо 150 - тогда да, может тебе такое и пригодится, но я думаю ты бы тогда о таком не спрашивал.. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2020, 11:52 |
|
Битовое поле плюсы и минусы
|
|||
---|---|---|---|
#18+
redsunrise, Если прикладной код, то клас делаю БИЗНЕС СУЩНОСТЬЮ. Поля там бизнес осмысленные. Если набираем осмысленных прлей 50 штук, то будет 50 полей вида Да/Нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2020, 12:12 |
|
Битовое поле плюсы и минусы
|
|||
---|---|---|---|
#18+
redsunrise Доброго времени суток, Прошу совета у опытных людей, можете объяснить в чем плюсы и минусы храненния свойств класса в битовом поле. Есть класс у него допустим 30 полей, мне нужно добавить еще 10 и все они имеют тип boolean, я бы хотел засунуть их в битовое поле и хранить там, на бэке эти поля только хранятся в модели. А вся логика по тому чтобы разобрать что там лежит находится во фронте. Надеюсь понятно объяснил. Почему возник вопрос. Я прикладной программист и дорабатываю ПО от одной галеры через их sdk для конкретного клиента, и вижу что у них иногда возникают похожие ситуации и они всегда добавляют 10 boolean полей к классу, вместо добавления 1 поля с битовым полем и хранения всех данных в нем. Плюсы у bitset есть - это экономия места. Чтоб знать какая будет экономия внутри класса надо посмотреть через эту штуку https://stackoverflow.com/questions/9368764/calculate-size-of-object-in-java Подозреваю что размер может зависеть от версии JVM и от производителя. Возможно в ранних версиях Java boolean отображался на алгебраический int в момент выполнения калькуляций. ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2020, 23:54 |
|
Битовое поле плюсы и минусы
|
|||
---|---|---|---|
#18+
16 boolean занимают прибл 32 байта в том числе и заголовок класса ... |
|||
:
Нравится:
Не нравится:
|
|||
06.08.2020, 23:57 |
|
Битовое поле плюсы и минусы
|
|||
---|---|---|---|
#18+
redsunrise, Есть смысл, если у тебя там 10+ миллионов объектов обрабатывается одновременно. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2020, 06:24 |
|
Битовое поле плюсы и минусы
|
|||
---|---|---|---|
#18+
Массив Boolean, можно ещё попробовать. Для сравнения. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2020, 08:25 |
|
Битовое поле плюсы и минусы
|
|||
---|---|---|---|
#18+
Ко всем
... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2020, 10:52 |
|
Битовое поле плюсы и минусы
|
|||
---|---|---|---|
#18+
redsunrise, Вау, сколько понаписал то)). Опиши систему2. Не может бд светить своим портом наружу. Ну почти не может. А если не бд а сервис, то нафига вообще ее упомянул? ... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2020, 11:22 |
|
Битовое поле плюсы и минусы
|
|||
---|---|---|---|
#18+
redsunrise, Отдели крупно не твои ИС. Там где ты не можешь повлиять и переписать. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2020, 11:26 |
|
Битовое поле плюсы и минусы
|
|||
---|---|---|---|
#18+
redsunrise, Система0 и система1 действуют по РЕСТ. Ели типа ангуляр на фронте, то это БЛ на фронте. Шли туда биты. Нет проблем. Про реакт не знаю. Если БЛ на бэке, то никаких бит не должно быть. Делай фасад или перекодируй. Всё. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2020, 11:30 |
|
Битовое поле плюсы и минусы
|
|||
---|---|---|---|
#18+
Я не очень понял проблему автора. Вроде как есть несколько систем между которыми надо синхронизировать бизнес-сущности. Проблема стара как мир. Ее решают по разному. Ее можно решить кодо-генерацией. Но это надо обсуждать с командой. Обычно команда (по личному опыту) резко негативно относится к коду который в системе производится в фазе компилляции различными самодельными maven-plugins, хотя я считаю что это оптимальный подход в части простоты-качества. В этом-же генераторе можно оформить и битовые и булевые поля для всех систем сразу. Но должен быть единый репозитарий описания этих-же сущностей. Идеально если в JSON-формате. Тогда его можно будет передавать смежным специалистам из UI/BackEnd и никто не будет кричать что ему здесь непонятно и так далее. ... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2020, 11:59 |
|
Битовое поле плюсы и минусы
|
|||
---|---|---|---|
#18+
mayton, Проблема тут. Или может не проблема а фича: авторТак вот в "системе 2", атрибуты сущности бывает периодически меняются, эти новые атрибуты приезжают через "систему 3" не в виде отдельных полей, а в виде Integer поля в котором содержится значение всех атрибутов, например пришло значение 10, а значения флагов такие: 2 - это флаг 1 4 - это флаг 2 8 - это флаг 3 то с помощью побитового И можно узнать, что пришли флаги 1 и 3. То есть кто то не отправляет в другую систему осмысленные поля. А решил ради экономии все поля сжать и отправить хэш строкой)))) ... |
|||
:
Нравится:
Не нравится:
|
|||
07.08.2020, 12:19 |
|
Битовое поле плюсы и минусы
|
|||
---|---|---|---|
#18+
redsunrise моя цель минимизировать доработки во всех системах при обновлении Тогда о каких bitset'ах может идти речь? В любом случае на жабке придётся делать get/set и название на каждый boolean, не будешь же ты передавать наружу всё это интом и тащить инфу о том, как этот инт парсить и какие там поля где. Хотя, кто тебя знает. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2020, 05:46 |
|
Битовое поле плюсы и минусы
|
|||
---|---|---|---|
#18+
Топик про рутину. Яж писал про это. И тех людей которым лень завести еще 1 getter я поддерживаю. Но я поддерживаю ту лень, которая приводит к какой-то автоматизации рутины. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2020, 17:07 |
|
Битовое поле плюсы и минусы
|
|||
---|---|---|---|
#18+
а если перейти к практике - то в битах удобно хранить график дежурств на месяц ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2020, 18:44 |
|
Битовое поле плюсы и минусы
|
|||
---|---|---|---|
#18+
вадя а если перейти к практике - то в битах удобно хранить график дежурств на месяц ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2020, 19:05 |
|
Битовое поле плюсы и минусы
|
|||
---|---|---|---|
#18+
О битах можно говорить когда есть фаза интенсивной работы с битами. Причем со всеми сразу. Но эта задача не будет считаться решённой пока мы не придумаем как хранить биты в бд (да-да в бизнес коде все данные лежат в бд). И это - безкомпромиссно. Придумайте обобщенный способ хранения битсета в бд. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2020, 19:14 |
|
Битовое поле плюсы и минусы
|
|||
---|---|---|---|
#18+
mayton Но эта задача не будет считаться решённой пока мы не придумаем как хранить биты в бд (да-да в бизнес коде все данные лежат в бд). ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2020, 19:28 |
|
Битовое поле плюсы и минусы
|
|||
---|---|---|---|
#18+
Зачем 64? Бизнес хочет роста. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2020, 20:15 |
|
Битовое поле плюсы и минусы
|
|||
---|---|---|---|
#18+
mayton Зачем 64? Бизнес хочет роста. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2020, 20:36 |
|
Битовое поле плюсы и минусы
|
|||
---|---|---|---|
#18+
вадя mayton Зачем 64? Бизнес хочет роста. Не вижу связи. Криптография работает на 4096 битах как-то на текущем железе. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2020, 21:04 |
|
Битовое поле плюсы и минусы
|
|||
---|---|---|---|
#18+
mayton Криптография работает на 4096 битах как-то на текущем железе. 64 бита это одна операция or/and/xor если у тебя 4096 - это уже циклы... 64бит * 64 это уже равносильно хранение boolean ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2020, 21:15 |
|
Битовое поле плюсы и минусы
|
|||
---|---|---|---|
#18+
вадя mayton Криптография работает на 4096 битах как-то на текущем железе. 64 бита это одна операция or/and/xor если у тебя 4096 - это уже циклы... 64бит * 64 это уже равносильно хранение boolean А кто вообще говорил про 1 операцию? Я спрашивал как генерализованной dbms хранить это? Как обновлять отдельные биты? ... |
|||
:
Нравится:
Не нравится:
|
|||
10.08.2020, 22:42 |
|
|
start [/forum/topic.php?fid=59&msg=39987018&tid=2120718]: |
0ms |
get settings: |
26ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
153ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
499ms |
get tp. blocked users: |
2ms |
others: | 324ms |
total: | 1041ms |
0 / 0 |