В Windows (и, возможно, в других 64-разрядных операционных системах) поддерживаются 32-разрядные приложения. Поэтому одним из возможных преимуществ 32-битного приложения является большая мобильность.
Основным преимуществом 64-разрядного приложения является то, что оно может обращаться к 4 ГБ или более памяти в виде плоского адресного пространства. Тем не менее, сравнительно немного приложений выигрывают от этого. Недостаток 64-битного приложения заключается в том, что каждый указатель занимает 8 байтов памяти вместо 4 байтов. Это означает, что программный код и структуры данных занимают больше памяти, что означает, что они могут быть медленнее. Насколько медленнее сильно варьируется. Это возможно для 64 битного приложения , чтобы быть немного быстрее, из - за проблемы с выравниванием памяти, хотя я думаю, что чем больше объем памяти будет перевешивать это на некоторое время.
Поскольку процессоры становятся все более оптимизированными для 64-битного кода и менее оптимизированными для 32-битных, со временем - и поскольку экономия становится менее актуальной по сравнению с трудностями, - эти проблемы станут такими же неактуальными, как потенциально немного лучшая эффективность 16-битного кода для приложений что нужно только 64 КБ памяти. В некоторой степени это уже происходит, но пока многие люди продолжают придерживаться Windows XP, проблема переносимости останется.
В Linux «старые 32-битные приложения» практически не проблема. Поскольку исходный код доступен для большинства программ, 32-битная или 64-битная компиляция обычно так же легко получить, даже для старых приложений. Если вы используете 64-битный Linux, все ваши приложения, вероятно, скомпилированы как 64-битный код - я не проверял, включена ли какая-либо 32-битная двоичная поддержка в 64-битный Linux, хотя я использую 64-битный Linux каждый день, потому что это не проблема.