Pavel3333 1,148 Posted August 8, 2016 (edited) В GCC (могу спутать) булевая переменная представляется как 1 БАЙТ, а не бит! Почему? Это в ВОСЕМЬ РАЗ больше достаточного! При большом наборе таких булей будут огромные растраты памяти! Почему??? Edited August 8, 2016 by Pavel3333 Quote Share this post Link to post Short link Share on other sites
ktulho 5,790 #344477 Posted August 8, 2016 Так это во всех языках так. ИМХО, потому что процессор обращается к байтам памяти, а не к битам. Quote Share this post Link to post Short link Share on other sites
Наглый Котэ 475 #344481 Posted August 8, 2016 Если не окончательно туплю... http://cppstudio.com/post/271/ Quote Share this post Link to post Short link Share on other sites
Wanket 3 #344487 Posted August 8, 2016 Минимальная адресация процессора 1 байт, максимальная 4(x86), либо 8(x86_64) байт. За эти границы вылезти можно только костылями, например vector<bool> использует один bool как один бит 2 Quote Share this post Link to post Short link Share on other sites
Pavel3333 1,148 #344499 Posted August 8, 2016 Ну допустим. Но ведь можно создать в одном байте восемь таких булей и обращаться как к массиву. Или так тоже нельзя делать? Quote Share this post Link to post Short link Share on other sites
ktulho 5,790 #344504 Posted August 8, 2016 Ну допустим. Но ведь можно создать в одном байте восемь таких булей и обращаться как к массиву. Или так тоже нельзя делать? , это уже как программист пожелает. P.S. ИМХО, бесполезная трата ресурсов процессора. Quote Share this post Link to post Short link Share on other sites
Wanket 3 #344508 Posted August 8, 2016 Ну допустим. Но ведь можно создать в одном байте восемь таких булей и обращаться как к массиву. Или так тоже нельзя делать? vector<bool> так и делает Подробности в гугле Quote Share this post Link to post Short link Share on other sites
Pavel3333 1,148 #344513 Posted August 8, 2016 Спасибо, почитаю! :-) ИМХО, бесполезная трата ресурсов процессора. А моё ИМХО - полезное использование ресурсов оперативки ИМХО, для проца без разницы, к битам или к байтам обращаться. Quote Share this post Link to post Short link Share on other sites
ktulho 5,790 #344515 Posted August 8, 2016 А моё ИМХО - полезное использование ресурсов оперативки , сколько же у вас логических переменных? ИМХО, для проца без разницы, к битам или к байтам обращаться Выравнивание данных. Quote Share this post Link to post Short link Share on other sites
Pavel3333 1,148 #344522 Posted August 8, 2016 , сколько же у вас логических переменных? В моих программах их не так много - от нуля до одиннадцати. Выравнивание данных. Понял, был не прав. Оперативка может будет расходоваться чуть больше, но зато ничего тормозить не будет. Quote Share this post Link to post Short link Share on other sites
ktulho 5,790 #344523 Posted August 8, 2016 В моих программах их не так много - от нуля до одиннадцати. , и вы хотели сэкономить 9 байт? Это явно перебор. Quote Share this post Link to post Short link Share on other sites
SkepticalFox 1,445 #344524 Posted August 8, 2016 Почему???Есть такая штука, как бесполезная оптимизация. Quote Share this post Link to post Short link Share on other sites
Pavel3333 1,148 #344531 Posted August 8, 2016 , и вы хотели сэкономить 9 байт? Это явно перебор. Себя я в пример не беру. Хотя, оптимизация и впрямь бесполезная, так как если будет 100500 переменных, то их вес будет 98,15 кБ. Лучше уж позаботиться об оптимизации изображений. Они занимают в десятки и сотни раз больше места. Quote Share this post Link to post Short link Share on other sites
SkepticalFox 1,445 #344537 Posted August 8, 2016 Они занимают в десятки и сотни раз больше места.А вот это очень интересно https://habrahabr.ru/company/io/blog/261971/ Quote Share this post Link to post Short link Share on other sites
Pavel3333 1,148 #344548 Posted August 8, 2016 А вот это очень интересно Очень полезно, спасибо. Никогда не знал о таких форматах. Quote Share this post Link to post Short link Share on other sites
goodman 664 #344565 Posted August 8, 2016 1 БАЙТ, а не бит это ты шутишь надеюсь? сколько оперативы в твоей машине? и какую же мегасофтину ты сваял, что бы уничтожить память?4 гига имеющихся в калькуляторе слабо засрать будет то Quote Share this post Link to post Short link Share on other sites
Pavel3333 1,148 #344601 Posted August 8, 2016 (edited) сколько оперативы в твоей машине? На ноуте - 3 ГБ. На компьютере - 4 ГБ. 4 гига имеющихся в калькуляторе слабо засрать будет то НИВАЗМОЖНА СЛОЖНА засрать так 4 ГБ. Я состарюсь пока окончательно засорю бульками свою оперативку) и какую же мегасофтину ты сваял, что бы уничтожить память? Пока что никакую, просто задумался, что если прога типа 3D Макса носит много (действительно много!) булевых переменных, то почему не могли сократить размер каждой до бита. Так-то оператива у меня действительно засирается до нуля во время рендеринга, и посему подумал - почему бы не сделать так. Edited August 8, 2016 by Pavel3333 Quote Share this post Link to post Short link Share on other sites
SkepticalFox 1,445 #344613 Posted August 8, 2016 (edited) Так-то оператива у меня действительно засирается до нуля во время рендеринга, и посему подумал - почему бы не сделать так.И рендеринг это очень сложная штука с просчетом всего, что только возможно. Память там явно не под bool отдается, а под кэширование.. Edited May 27, 2017 by SkepticalFox Quote Share this post Link to post Short link Share on other sites
Pavel3333 1,148 #344614 Posted August 8, 2016 (edited) Кстати, bool в Си полный отстой. Лучше использовать char. Почему? Можно ссылочку? 'По ссылке Ноглого Котэ' Так-то они практически ни чем не отличаются. Разве что типом - логическим и символьным. Edited August 8, 2016 by Pavel3333 1 Quote Share this post Link to post Short link Share on other sites
SkepticalFox 1,445 #344618 Posted August 8, 2016 Почему?В C89 нет такого типа, а совместимостью со старыми компиляторами пренебрегать нельзя. Quote Share this post Link to post Short link Share on other sites