Size: a a a

2020 February 17

IK

Ilya Kaznacheev in Go-go!
Я что-то не нашел сходу
источник

а

а кто это in Go-go!
Vitaliy Levchenko
блин, о чём мы спорим. Аллоцирован слайс структур из 8 bool, он занимает чуть больше байта на структуру. Т.е. 1 bool занимает 1 бит
сдается мне, этими 8 байтами был указатель
источник

RS

Roman Sharkov in Go-go!
ээээ…

a := make([]bool, 100500)

c := make([]bool, 100500)


а где, собственно, используется type b ?!
источник

p

pragus in Go-go!
Vitaliy Levchenko
блин, о чём мы спорим. Аллоцирован слайс структур из 8 bool, он занимает чуть больше байта на структуру. Т.е. 1 bool занимает 1 бит
я чуть поправил твой бенч )
источник

VL

Vitaliy Levchenko in Go-go!
да, вы правы
источник

DP

Daniel Podolsky in Go-go!
Vitaliy Levchenko
блин, о чём мы спорим. Аллоцирован слайс структур из 8 bool, он занимает чуть больше байта на структуру. Т.е. 1 bool занимает 1 бит
я не спорю, я задаю вопрос:

Daniel Podolsky, [17 Feb 2020 at 11:50:48]:
ты хочешь сказать, что unsafe.Sizeof() нам врет?
источник

VL

Vitaliy Levchenko in Go-go!
сорри
источник

RS

Roman Sharkov in Go-go!
даже если бы Go так и делал - мне бы очень неповерилось, ибо компилятор не должен за нас решать memory vs computation trade-off. Хранение bool’ов в качестве бит’ов в uint 8/16/32/64 это всегда минус в производительности и плюс в потреблении памяти.
источник

а

а кто это in Go-go!
Roman Sharkov
даже если бы Go так и делал - мне бы очень неповерилось, ибо компилятор не должен за нас решать memory vs computation trade-off. Хранение bool’ов в качестве бит’ов в uint 8/16/32/64 это всегда минус в производительности и плюс в потреблении памяти.
память дешевле кпу, да
источник

B

Biter in Go-go!
pragus
зачем? читаешь же, а не пишешь
Ну да, согласен
источник

а

а кто это in Go-go!
что нужно сделать, чтоб получить звание евангелиста Go
источник

RS

Roman Sharkov in Go-go!
а кто это
что нужно сделать, чтоб получить звание евангелиста Go
присвоить себе его 🙂
источник

p

pragus in Go-go!
Co. In
Вопрос на засыпку. Тип bool занимает же 1 байт в памяти? Есть ли смысл хранить в bool или byte{1} и byte{0} тоже норм? Мне для работы с бинарной логикой и 1 и 0 визуально лучше воспринимаются чем true и false
вообще, используйте binary literals
источник

p

pragus in Go-go!
Roman Sharkov
даже если бы Go так и делал - мне бы очень неповерилось, ибо компилятор не должен за нас решать memory vs computation trade-off. Хранение bool’ов в качестве бит’ов в uint 8/16/32/64 это всегда минус в производительности и плюс в потреблении памяти.
> Хранение bool’ов в качестве бит’ов в uint 8/16/32/64 это всегда минус в производительности и плюс в потреблении памяти.

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

@

@mr_tron in Go-go!
pragus
> Хранение bool’ов в качестве бит’ов в uint 8/16/32/64 это всегда минус в производительности и плюс в потреблении памяти.

почему?
Потому что одиночный бул тогда занимает не один байт, а 16
источник

@

@mr_tron in Go-go!
8 - указатель на инт где лежит булеан
1 - его номер
7 - выравнивание
источник

а

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

RS

Roman Sharkov in Go-go!
Co. In
Вопрос на засыпку. Тип bool занимает же 1 байт в памяти? Есть ли смысл хранить в bool или byte{1} и byte{0} тоже норм? Мне для работы с бинарной логикой и 1 и 0 визуально лучше воспринимаются чем true и false
источник

RS

Roman Sharkov in Go-go!
pragus
> Хранение bool’ов в качестве бит’ов в uint 8/16/32/64 это всегда минус в производительности и плюс в потреблении памяти.

почему?
а как ты достанешь 1 бит на определённом bit-offset’е? только вычислением 🙂 меньше 1 байта современные системы не адрессируют
источник

p

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