1. доставать по-битно дороже по CPU 2. доставать по-битно дороже по времени разработки 3. память довольно дешёвая и таким видом компрессии заниматься стоит только тогда, когда это действительно необходимо
нет никакой магии. Есть доставание bool’а в качестве напрямую адресируемого byte’а и вычисление bit’а по offset’у из uint 8/16/32/64
На самом деле в большинстве кейсов не нужно доставать конкретный бит (пока не сравниваешь два була). Например для условий цикла достаточно побитового и с 00001000
Я бы сказал, что если в структуре подряд хранится восемь булов, то высока вероятность, что битовые маски будут выгоднее. При сложных условиях на этих булах нужно будет меньше таскать между памятью и регистрами и в кешах может что-нибудь осесть
1. доставать по-битно дороже по CPU 2. доставать по-битно дороже по времени разработки 3. память довольно дешёвая и таким видом компрессии заниматься стоит только тогда, когда это действительно необходимо
память — дешёвая. Но память в кешах процессора дорогая — а она в разы ускоряет исполнение.
Я бы сказал, что если в структуре подряд хранится восемь булов, то высока вероятность, что битовые маски будут выгоднее. При сложных условиях на этих булах нужно будет меньше таскать между памятью и регистрами и в кешах может что-нибудь осесть
до тех пор пока ты не сделаешь b := &myStructWith8Bools.Bool3