Запуск 32-разрядных приложений быстрее или медленнее на 64-битной ОС?

В основном я работал на 32-битных встроенных системах, где, как правило, быстрее использовать собственные 32-битные типы (int, float), чем 16-битные эквиваленты. Замедление происходило от процессоров, расширяющих любое количество 16 бит до 32 бит, прежде чем выполнять операции над ним.

Теперь я перешел на ПК и 64-битную ОС. Мой вопрос: 32-разрядные типы вызывают любое замедление на 64-битных машинах?

Например, если я создаю MyApp.exe как 32-разрядное приложение, будет ли он работать медленнее на 64-битной ОС или быстрее?

Я понимаю, что есть много факторов, влияющих на производительность приложения, и я намеренно исключаю эти факторы из вопроса (скорость ввода-вывода, более быстрая память и т.д.).

Ответ 1

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

Я не вижу, как вы можете законно исключить любой фактор из соображений производительности, потому что производительность всегда происходит в реальном мире, где все факторы находятся в игре. Скорость не является теоретической и не может рассматриваться изолированно.

Вот статья, в которой автор сделал некоторые бенчмаркинга:

http://www.osnews.com/story/5768

Он обнаружил, что 32-битные двоичные файлы были быстрее в его тестах. Это было на SPARC в начале 2004 года.

Вот статья Intel от 2010 года о переходе на 64-разрядные приложения:

http://software.intel.com/en-us/articles/moving-from-32-bit-applications-to-64-bit-applications-en/

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