Existe algum bom motivo para fornecer uma versão de 32 bits e uma versão de 64 bits de qualquer software direcionado a máquinas desktop modernas, executando sistemas operacionais de 64 bits modernos em hardware de 64 bits?
Parece que o software de 64 bits seria mais eficiente, permitiria maior uso de memória, se necessário, etc. A Apple ainda usa processadores de 64 bits para seus telefones, mesmo que eles tenham apenas 1 a 2 GB de RAM, bem abaixo dos 4 GB limite para CPUs de 32 bits.
Respostas:
Benefícios do software de 32 bits em ambientes de 64 bits
Desvantagens do software de 32 bits em ambientes de 64 bits
Outros aspectos
A menos que compare aqui uma arquitetura de CPU muito específica, sistema operacional e infraestrutura de biblioteca, não poderei entrar em mais detalhes.
fonte
A diferença entre o software de 32 bits e o de 64 bits é o tamanho dos ponteiros e talvez o tamanho do número inteiro. É isso aí.
Isso significa que todos os ponteiros do seu programa têm o dobro do tamanho. E (pelo menos em uma arquitetura ILP32 / LP64), seus
long
s também têm o dobro do tamanho. Isso normalmente resulta em um aumento de cerca de 30% no tamanho do código do objeto. Isso significa que …Isso tem um efeito negativo não negligenciável no desempenho.
Fazer isso só faz sentido se você puder "recomprar" esses custos de desempenho de alguma forma. Basicamente, existem duas maneiras de fazer isso: você faz muita matemática de número inteiro de 64 bits ou precisa de mais de 4 memória mapeada de GiByte. Se um ou os dois forem verdadeiros, faz sentido usar software de 64 bits, caso contrário, não.
Nota: existem algumas arquiteturas nas quais não existem variantes correspondentes de 32 ou 64 bits. Nesse caso, a pergunta obviamente não faz sentido. Os mais conhecidos são o IA64, que tem apenas 64 bits e não possui variante de 32 bits, e x86 / AMD64, que são, embora estreitamente relacionados, arquiteturas diferentes , x86 sendo apenas 32 bits e AMD64 sendo apenas 64 bits.
Na verdade, essa última afirmação não é mais 100% verdadeira. O Linux adicionou recentemente o x32 ABI, que permite executar o código AMD64 com ponteiros de 32 bits; portanto, mesmo que essa não seja uma arquitetura de CPU "adequada", é uma maneira de usar a arquitetura AMD64 de maneira a ter uma arquitetura nativa. Variante de 32 bits. Isso foi feito precisamente porque a sobrecarga de desempenho que mencionei acima estava causando problemas reais mensuráveis e quantificáveis para usuários do mundo real que executam código do mundo real em sistemas do mundo real.
fonte
Se o software precisar interagir diretamente com sistemas, drivers ou bibliotecas herdados, talvez seja necessário fornecer uma versão de 32 bits, pois o AFAIK, geralmente, o SO (definitivamente AFAIK do Windows e Linux) não permite a mistura de 64 e 32 bits. código de bits dentro de um processo.
Por exemplo, se o seu software precisar acessar hardware especial, não é incomum os clientes operarem modelos mais antigos para os quais apenas drivers de 32 bits estão disponíveis.
O que outras pessoas estão dizendo
fonte
Se o seu software é uma DLL, você DEVE fornecer as versões de 32 e 64 bits. Você não tem idéia se o cliente usará software de 32 ou 64 bits para conversar com a DLL, e a DLL precisará usar o mesmo tamanho de bit que o aplicativo. Isso não é negociável.
Se o seu software é um executável independente, fica menos claro. Se você não precisar que seu software seja executado em sistemas operacionais mais antigos, talvez não seja necessário fornecer uma versão de 32 bits. Apenas atenha-se a 64 bits, especifique que ele requer um sistema operacional de 64 bits e faça o trabalho.
No entanto, se você precisar que seu software seja executado em sistemas operacionais mais antigos, NÃO é possível fornecer ativamente uma versão de 64 bits. Se você tiver duas versões, terá o dobro do teste, e testar corretamente o software em várias versões e idiomas do SO não é um processo rápido. Como o software de 32 bits é executado perfeitamente em uma plataforma de 64 bits, ainda é bastante comum que o software seja lançado apenas como 32 bits, especialmente por desenvolvedores menores.
Observe também que a maioria dos celulares é de 32 bits. Talvez alguns dos mais sofisticados sejam de 64 bits agora, mas há poucas razões convincentes para dar esse passo. Portanto, se você estiver desenvolvendo uma plataforma cruzada e desejar que seu código seja executado no Android também, permanecer 32 bits é uma opção segura.
fonte