Size: a a a

2020 February 17

@

@mr_tron in Go-go!
pragus
редко нужен 1 bool сам по себе. вот у тебя 3 бита флагов (пусть банальные read/write/exec). и что, под них 3 байта в структуре заводить?
Хз. Мне часто. 15 минут назад добавил булеан в структуру, где кроме него три строки и всё
источник

RS

Roman Sharkov in Go-go!
pragus
редко нужен 1 bool сам по себе. вот у тебя 3 бита флагов (пусть банальные read/write/exec). и что, под них 3 байта в структуре заводить?
1. доставать по-битно дороже по CPU
2. доставать по-битно дороже по времени разработки
3. память довольно дешёвая и таким видом компрессии заниматься стоит только тогда, когда это действительно необходимо
источник

а

а кто это in Go-go!
pragus
редко нужен 1 bool сам по себе. вот у тебя 3 бита флагов (пусть банальные read/write/exec). и что, под них 3 байта в структуре заводить?
почему это 1 bool редко нужен
источник

а

а кто это in Go-go!
постоянно
источник

p

pragus in Go-go!
а кто это
почему это 1 bool редко нужен
_сам по себе_
источник

а

а кто это in Go-go!
pragus
_сам по себе_
сам по себе тоже
источник

Y

Yevhenii in Go-go!
Может компилятор сам это все оптимизирует?
источник

а

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

RS

Roman Sharkov in Go-go!
Yevhenii
Может компилятор сам это все оптимизирует?
не имеет права
источник

p

pragus in Go-go!
Roman Sharkov
1. доставать по-битно дороже по CPU
2. доставать по-битно дороже по времени разработки
3. память довольно дешёвая и таким видом компрессии заниматься стоит только тогда, когда это действительно необходимо
> 1. доставать по-битно дороже по CPU

а есть бенчи?

> 2. доставать по-битно дороже по времени разработки

почему?
источник

Y

Yevhenii in Go-go!
Roman Sharkov
не имеет права
Потому что это будет не очевидно?
источник

а

а кто это in Go-go!
Yevhenii
Потому что это будет не очевидно?
потому что бул есть инт/байт и это везде так
источник

RS

Roman Sharkov in Go-go!
pragus
> 1. доставать по-битно дороже по CPU

а есть бенчи?

> 2. доставать по-битно дороже по времени разработки

почему?
> а есть бенчи?

нет, но можно написать.

> > 2. доставать по-битно дороже по времени разработки
> почему?

потому-что это ещё надо написать, а вот достать bool и прочитать его - тривиальная задача
источник

p

pragus in Go-go!
Roman Sharkov
1. доставать по-битно дороже по CPU
2. доставать по-битно дороже по времени разработки
3. память довольно дешёвая и таким видом компрессии заниматься стоит только тогда, когда это действительно необходимо
> 3. память довольно дешёвая и таким видом компрессии заниматься стоит только тогда, когда это действительно необходимо

когда ты интерфейсишься с сишным кодом у тебя нет выбора. и у многих протоколов флажки в виде битов.
источник

Y

Yevhenii in Go-go!
а кто это
потому что бул есть инт/байт и это везде так
Если память не подводит меня, в JVM с этим какая-то магия, и оно хранит бул в бите
источник

а

а кто это in Go-go!
Yevhenii
Если память не подводит меня, в JVM с этим какая-то магия, и оно хранит бул в бите
там размер boolean вообще не гарантирован и зависит от платформы
источник

RS

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

p

pragus in Go-go!
Roman Sharkov
> а есть бенчи?

нет, но можно написать.

> > 2. доставать по-битно дороже по времени разработки
> почему?

потому-что это ещё надо написать, а вот достать bool и прочитать его - тривиальная задача
> потому-что это ещё надо написать

там есть что-то писать?
источник

RS

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

Y

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