Экономят ли 32-битные типы памяти на 64-битных системах?

Экономят ли 32-битные типы памяти на 64-битных системах? Кроме того, разделена ли память на отдельные байты или многобайтовые (32/64-битные)?

Я знаю, что процессор обрабатывает все данные как 64-битные, заполняя недостающие данные. Так замедлит ли 32-битный int вычисления? Или int будет храниться как 64-битный в любом случае?

Я спрашиваю, потому что я был обучен микроконтроллерам, где память и память ограничены, и мне интересно, актуально ли это вообще для смартфонов и компьютеров.

Благодарю.

2 ответа

Если у вас нет огромных массивов (сотни МБ или даже ГБ), вы не сэкономите много памяти при использовании 32-разрядных типов в современных системах. Если вы занимаетесь математикой (например, криптоалгоритмы), работа с 64-битными целыми числами должна повысить производительность.

Размер не является проблемой, компилятор, как правило, имеет это. Что важно для производительности, так это структурирование хранилища данных.

Структуры данных дополнений, так что каждый элемент данных структур данных и массивов выровнен по естественному размеру операнда 64 или 128 бит. Также структурируйте данные в 64-байтовые сегменты, чтобы соответствовать размеру строки кэша L1 в 64 и 128 байтов. 64 байта на процессорах Intel Pentium 4, Intel Xeon, Pentium M, Intel Core Duo, 128 байтов на процессорах Pentium 4 и Intel Xeon.

Вы не хотите обращаться к переменным, хранящимся в двух разных строках кэша. В рутине используются переменные, определенные локально, а не глобально. Если к глобальным объектам нужно обращаться неоднократно в течение длительного периода, скопируйте их в переменные, определенные в локальном стеке.

Другие вопросы по тегам