No Windows (e possivelmente em outros sistemas operacionais de 64 bits), os aplicativos de 32 bits são suportados. Uma vantagem possível de uma aplicação de 32 bits é, portanto, maior portabilidade.
A principal vantagem de um aplicativo de 64 bits é que ele pode acessar 4 GB ou mais de memória como um espaço de endereço simples. No entanto, relativamente poucas aplicações se beneficiam disso. A desvantagem de uma aplicação de 64 bits é que cada ponteiro ocupa 8 bytes de memória em vez de 4 bytes. Isso significa que o código do programa e as estruturas de dados ocupam mais memória, o que significa que podem ser mais lentos. Quanto mais lento varia muito. É possível que um aplicativo de 64 bits seja um pouco mais rápido, devido a problemas de alinhamento de memória, embora meu palpite seja que o tamanho maior de memória superará isso por um tempo.
À medida que os processadores ficam mais otimizados para códigos de 64 bits e menos otimizados para 32 bits, e como a economia fica menos relevante em comparação com as dificuldades - esses problemas se tornarão tão irrelevantes quanto a eficiência potencialmente melhor de 16 bits código para aplicativos que precisam apenas de 64 K de memória. Até certo ponto isso já está acontecendo - mas enquanto muitas pessoas continuarem se agarrando ao Windows XP, a questão da portabilidade continuará.
No Linux, "aplicativos antigos de 32 bits" são praticamente um problema. Como o código-fonte está disponível para a maioria dos softwares, uma compilação de 32 ou 64 bits geralmente é tão fácil quanto possível, mesmo para aplicativos antigos. Se você estiver usando o Linux de 64 bits, todos os seus aplicativos provavelmente serão compilados como código de 64 bits - não verifiquei se algum suporte binário de 32 bits está incluído no Linux de 64 bits, embora eu use o Linux de 64 bits todos os dias. porque não é um problema.