Pavel3333 Posted August 8, 2016 Share Posted August 8, 2016 (edited) В GCC (могу спутать) булевая переменная представляется как 1 БАЙТ, а не бит! Почему? Это в ВОСЕМЬ РАЗ больше достаточного! При большом наборе таких булей будут огромные растраты памяти! Почему??? Edited August 8, 2016 by Pavel3333 @ Quote Link to comment Short link Share on other sites More sharing options...
ktulho Posted August 8, 2016 Share Posted August 8, 2016 Так это во всех языках так. ИМХО, потому что процессор обращается к байтам памяти, а не к битам. @ Quote Link to comment Short link Share on other sites More sharing options...
Наглый Котэ Posted August 8, 2016 Share Posted August 8, 2016 Если не окончательно туплю... http://cppstudio.com/post/271/ @ Quote Link to comment Short link Share on other sites More sharing options...
Wanket Posted August 8, 2016 Share Posted August 8, 2016 Минимальная адресация процессора 1 байт, максимальная 4(x86), либо 8(x86_64) байт. За эти границы вылезти можно только костылями, например vector<bool> использует один bool как один бит 2 @ Quote Link to comment Short link Share on other sites More sharing options...
Pavel3333 Posted August 8, 2016 Author Share Posted August 8, 2016 Ну допустим. Но ведь можно создать в одном байте восемь таких булей и обращаться как к массиву. Или так тоже нельзя делать? @ Quote Link to comment Short link Share on other sites More sharing options...
ktulho Posted August 8, 2016 Share Posted August 8, 2016 Ну допустим. Но ведь можно создать в одном байте восемь таких булей и обращаться как к массиву. Или так тоже нельзя делать? , это уже как программист пожелает. P.S. ИМХО, бесполезная трата ресурсов процессора. @ Quote Link to comment Short link Share on other sites More sharing options...
Wanket Posted August 8, 2016 Share Posted August 8, 2016 Ну допустим. Но ведь можно создать в одном байте восемь таких булей и обращаться как к массиву. Или так тоже нельзя делать? vector<bool> так и делает Подробности в гугле @ Quote Link to comment Short link Share on other sites More sharing options...
Pavel3333 Posted August 8, 2016 Author Share Posted August 8, 2016 Спасибо, почитаю! :-) ИМХО, бесполезная трата ресурсов процессора. А моё ИМХО - полезное использование ресурсов оперативки ИМХО, для проца без разницы, к битам или к байтам обращаться. @ Quote Link to comment Short link Share on other sites More sharing options...
ktulho Posted August 8, 2016 Share Posted August 8, 2016 А моё ИМХО - полезное использование ресурсов оперативки , сколько же у вас логических переменных? ИМХО, для проца без разницы, к битам или к байтам обращаться Выравнивание данных. @ Quote Link to comment Short link Share on other sites More sharing options...
Pavel3333 Posted August 8, 2016 Author Share Posted August 8, 2016 , сколько же у вас логических переменных? В моих программах их не так много - от нуля до одиннадцати. Выравнивание данных. Понял, был не прав. Оперативка может будет расходоваться чуть больше, но зато ничего тормозить не будет. @ Quote Link to comment Short link Share on other sites More sharing options...
ktulho Posted August 8, 2016 Share Posted August 8, 2016 В моих программах их не так много - от нуля до одиннадцати. , и вы хотели сэкономить 9 байт? Это явно перебор. @ Quote Link to comment Short link Share on other sites More sharing options...
SkepticalFox Posted August 8, 2016 Share Posted August 8, 2016 Почему???Есть такая штука, как бесполезная оптимизация. @ Quote Link to comment Short link Share on other sites More sharing options...
Pavel3333 Posted August 8, 2016 Author Share Posted August 8, 2016 , и вы хотели сэкономить 9 байт? Это явно перебор. Себя я в пример не беру. Хотя, оптимизация и впрямь бесполезная, так как если будет 100500 переменных, то их вес будет 98,15 кБ. Лучше уж позаботиться об оптимизации изображений. Они занимают в десятки и сотни раз больше места. @ Quote Link to comment Short link Share on other sites More sharing options...
SkepticalFox Posted August 8, 2016 Share Posted August 8, 2016 Они занимают в десятки и сотни раз больше места.А вот это очень интересно https://habrahabr.ru/company/io/blog/261971/ @ Quote Link to comment Short link Share on other sites More sharing options...
Pavel3333 Posted August 8, 2016 Author Share Posted August 8, 2016 А вот это очень интересно Очень полезно, спасибо. Никогда не знал о таких форматах. @ Quote Link to comment Short link Share on other sites More sharing options...
goodman Posted August 8, 2016 Share Posted August 8, 2016 1 БАЙТ, а не бит это ты шутишь надеюсь? сколько оперативы в твоей машине? и какую же мегасофтину ты сваял, что бы уничтожить память?4 гига имеющихся в калькуляторе слабо засрать будет то @ Quote Link to comment Short link Share on other sites More sharing options...
Pavel3333 Posted August 8, 2016 Author Share Posted August 8, 2016 (edited) сколько оперативы в твоей машине? На ноуте - 3 ГБ. На компьютере - 4 ГБ. 4 гига имеющихся в калькуляторе слабо засрать будет то НИВАЗМОЖНА СЛОЖНА засрать так 4 ГБ. Я состарюсь пока окончательно засорю бульками свою оперативку) и какую же мегасофтину ты сваял, что бы уничтожить память? Пока что никакую, просто задумался, что если прога типа 3D Макса носит много (действительно много!) булевых переменных, то почему не могли сократить размер каждой до бита. Так-то оператива у меня действительно засирается до нуля во время рендеринга, и посему подумал - почему бы не сделать так. Edited August 8, 2016 by Pavel3333 @ Quote Link to comment Short link Share on other sites More sharing options...
SkepticalFox Posted August 8, 2016 Share Posted August 8, 2016 (edited) Так-то оператива у меня действительно засирается до нуля во время рендеринга, и посему подумал - почему бы не сделать так.И рендеринг это очень сложная штука с просчетом всего, что только возможно. Память там явно не под bool отдается, а под кэширование.. Edited May 27, 2017 by SkepticalFox @ Quote Link to comment Short link Share on other sites More sharing options...
Pavel3333 Posted August 8, 2016 Author Share Posted August 8, 2016 (edited) Кстати, bool в Си полный отстой. Лучше использовать char. Почему? Можно ссылочку? 'По ссылке Ноглого Котэ' Так-то они практически ни чем не отличаются. Разве что типом - логическим и символьным. Edited August 8, 2016 by Pavel3333 1 @ Quote Link to comment Short link Share on other sites More sharing options...
SkepticalFox Posted August 8, 2016 Share Posted August 8, 2016 Почему?В C89 нет такого типа, а совместимостью со старыми компиляторами пренебрегать нельзя. @ Quote Link to comment Short link Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.