Полагаю, я сосредотачиваюсь на x86, но в целом меня интересует переход с 32 на 64 бит.
Логически я вижу, что константы и указатели в некоторых случаях будут больше, поэтому программы, вероятно, будут больше. И желание выделить память на границах слов для эффективности означало бы больше пустого пространства между выделениями.
Я также слышал, что 32-битный режим на x86 должен очищать свой кеш при переключении контекста из-за возможного перекрытия адресных пространств 4G.
Итак, каковы реальные преимущества 64-битной версии?
И как дополнительный вопрос, будет ли 128 бит еще лучше?
Редактировать:
Я только что написал свою первую 32/64 битную программу. Он создает связанные списки / деревья из 16-байтовых (32-битная версия) или 32-байтовых (64-битная версия) объектов и много печатает в stderr - не очень полезная программа и не что-то типичное, но это моя первая.
Размер: 81128 (32b) v 83672 (64b) - так что особой разницы
Скорость: 17 с (32b) v 24s (64b) - работает на 32-битной ОС (OS-X 10.5.8)
Обновить:
Отмечу, что разрабатывается новый гибридный x32 ABI (Application Binary Interface), который имеет размер 64b, но использует указатели 32b. Для некоторых тестов это приводит к меньшему размеру кода и более быстрому выполнению, чем 32b или 64b.