Size: a a a

2020 February 17

а

а кто это in Go-go!
да кто такие эти ваши побитовые операции
источник

Y

Yevhenii in Go-go!
Roman Sharkov
потому-что компилятор не имеет права в данном случае принимать за нас решения когда речь о trade-off’е
Trade off?
источник

RS

Roman Sharkov in Go-go!
Yevhenii
Trade off?
конечно
источник

а

а кто это in Go-go!
Roman Sharkov
нет никакой магии. Есть доставание bool’а в качестве напрямую адресируемого byte’а и вычисление bit’а по offset’у из uint 8/16/32/64
не похоже на JVM
источник

DP

Daniel Podolsky in Go-go!
Yevhenii
Ясно
постарайтесь оградить нас от таких “ценных” высказываний, ок?
источник

Y

Yevhenii in Go-go!
Roman Sharkov
конечно
Что это?
источник

Y

Yevhenii in Go-go!
Daniel Podolsky
постарайтесь оградить нас от таких “ценных” высказываний, ок?
Окей
источник

DM

Dmitry M in Go-go!
Roman Sharkov
1. доставать по-битно дороже по CPU
2. доставать по-битно дороже по времени разработки
3. память довольно дешёвая и таким видом компрессии заниматься стоит только тогда, когда это действительно необходимо
Очень интересно. Есть http://roaringbitmap.org и есть компактные структуры основанных на битовых картах(https://habr.com/ru/company/mailru/blog/479822/), а вы утверждаете, что всё это неверно.
источник

RS

Roman Sharkov in Go-go!
я утверждал что bitmap не существует?
источник

DM

Dmitry M in Go-go!
Roman Sharkov
я утверждал что bitmap не существует?
ты утверждаешь, что быты это дорого
источник

а

а кто это in Go-go!
дороже обычных булов
источник

ЕО

Евгений Омельченко in Go-go!
Roman Sharkov
нет никакой магии. Есть доставание bool’а в качестве напрямую адресируемого byte’а и вычисление bit’а по offset’у из uint 8/16/32/64
На самом деле в большинстве кейсов не нужно доставать конкретный бит (пока не сравниваешь два була). Например для условий цикла достаточно побитового и с 00001000
источник

RS

Roman Sharkov in Go-go!
Dmitry M
ты утверждаешь, что быты это дорого
ну чтож, предлагаю написать benchmark и выяснить, может я действительно ошибаюсь, но я лично сильно в этом сомневаюсь 🙂
источник

@

@mr_tron in Go-go!
зависит от задачи. очевидно иногда битовые маски выгоднее
источник

ЕО

Евгений Омельченко in Go-go!
Я бы сказал, что если в структуре подряд хранится восемь булов, то высока вероятность, что битовые маски будут выгоднее. При сложных условиях на этих булах нужно будет меньше таскать между памятью и регистрами и в кешах может что-нибудь осесть
источник

ЕО

Евгений Омельченко in Go-go!
Но в синтетических тестах скорее всего 8 uint8 выиграют битовую маску
источник

VL

Vitaliy Levchenko in Go-go!
Roman Sharkov
1. доставать по-битно дороже по CPU
2. доставать по-битно дороже по времени разработки
3. память довольно дешёвая и таким видом компрессии заниматься стоит только тогда, когда это действительно необходимо
память — дешёвая. Но память в кешах процессора дорогая — а она в разы ускоряет исполнение.
источник

RS

Roman Sharkov in Go-go!
Vitaliy Levchenko
память — дешёвая. Но память в кешах процессора дорогая — а она в разы ускоряет исполнение.
поэтому я и предложил написать benchmark да проверить, нет смысла гадать 🙂
источник

@

@mr_tron in Go-go!
Евгений Омельченко
Я бы сказал, что если в структуре подряд хранится восемь булов, то высока вероятность, что битовые маски будут выгоднее. При сложных условиях на этих булах нужно будет меньше таскать между памятью и регистрами и в кешах может что-нибудь осесть
до тех пор пока ты не сделаешь b := &myStructWith8Bools.Bool3
источник

x

x-foby in Go-go!
Забавно то, что даже при работе через битовые операции, все условия будут bool. В таком случае не понятно, к чему вообще спор)
источник