Почему 64-битные приложения работают быстрее 32-битных?


Разница в производительности между 32-битными и 64-битными версиями приложений очень сильно зависит от их типа и типов данных, которые они обрабатывают. Но в среднем можно ожидать прирост в пределах 2-20% от простой перекомпиляции программы, что объясняется рядом архитектурных изменений в 64-битных процессорах [1].

Увеличение числа регистров общего назначения в таких процессорах позволяет оптимизировать в функциях работу с локальными переменными, которые более не требуется сохранять в оперативной памяти. Несколько аргументов функций передается через регистры, что также сокращает время их вызова [2].

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

Обратной же стороной перехода к 64-битной версии является увеличение размеров указателей и некоторых других типов данных в два раза, что может вызвать рост требований ПО к оперативной памяти системы. В ряде случаев, это может даже замедлить скорость работы 64-битного приложения, по сравнению с 32-битным. Однако это редкая ситуация и как правило они обусловлены неудачным выбором формата хранимых в программе данных.

Следует также заметить, что при запуске 32-битных версий ПО на 64-битных системах семейства Windows, старые 32-битные приложения будут выполняться чуть медленнее, из-за подсистемы WoW64, эмулирующей 32-битное окружение. В среднем потери для программ из-за этой прослойки WoW64 составят 2-3%, хотя в отдельных случаях это значение может быть гораздо больше.

Библиографический список



Найдите ошибки в своем C, C++, C# и Java коде

Предлагаем попробовать проверить код вашего проекта с помощью анализатора кода PVS-Studio. Одна найденная в нём ошибка скажет вам о пользе методологии статического анализа кода больше, чем десяток статей.

goto PVS-Studio;



Найденные ошибки

Проверено проектов
346
Собрано ошибок
13 188

А ты совершаешь ошибки в коде?

Проверь с помощью
PVS-Studio

Статический анализ
кода для C, C++, C#
и Java

goto PVS-Studio;