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

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

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

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

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

Следует также заметить, что при запуске 32\-битных версий ПО на 64\-битных системах семейства Windows, старые 32\-битные приложения будут выполняться чуть медленнее, из\-за подсистемы [WoW64](https://pvs-studio.ru/ru/blog/terms/0056/), эмулирующей 32\-битное окружение\. В среднем потери для программ из\-за этой прослойки WoW64 составят 2\-3%, хотя в отдельных случаях это значение может быть гораздо больше\.

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

1. Андрей Карпов\. [Оптимизация 64\-битных программ](https://pvs-studio.ru/ru/blog/posts/cpp/a0030/)\.
1. Блог компании ООО "СиПроВер"\. [Причины, по которым 64\-битные программы требуют больше стековой памяти](https://pvs-studio.ru/ru/blog/posts/cpp/0069/)\.
1. Обсуждение на сайте Stackoverflow\.com\. [Are 64 bit programs bigger and faster than 32 bit versions?](https://stackoverflow.com/questions/2378399/are-64-bit-programs-bigger-and-faster-than-32-bit-versions)
1. База знаний\. [Какими преимуществами обладают 64\-разрядные процессоры по сравнению с 32\-разрядными?](https://pvs-studio.ru/ru/blog/posts/k0002/)