¿Hay alguna buena razón para suministrar una versión de 32 bits junto con una versión de 64 bits de cualquier software dirigido a máquinas de escritorio modernas, que ejecuten sistemas operativos modernos de 64 bits en hardware de 64 bits?
Parece que el software de 64 bits sería más eficiente, permitiría un mayor uso de memoria si fuera necesario, etc. Apple incluso usa procesadores de 64 bits para sus teléfonos, a pesar de que solo tienen 1-2 GB de RAM, muy por debajo de los 4 GB límite para CPU de 32 bits.
Respuestas:
Beneficios del software de 32 bits en entornos de 64 bits
Inconvenientes del software de 32 bits en entornos de 64 bits
Otros aspectos
A menos que compare aquí una arquitectura de CPU, un sistema operativo y una infraestructura de biblioteca muy específicos, no podré entrar en más detalles.
fuente
La diferencia entre el software de 32 bits y el software de 64 bits es el tamaño de los punteros, y tal vez el tamaño de los registros enteros. Eso es.
Eso significa que todos los punteros en su programa son dos veces más grandes. Y (al menos en una arquitectura ILP32 / LP64) sus
long
s también son dos veces más grandes. Esto generalmente se traduce en un aumento del 30% en el tamaño del código de objeto. Esto significa que …Esto tiene un efecto negativo no despreciable en el rendimiento.
Hacer esto solo tiene sentido si puede "recomprar" esos costos de rendimiento de alguna manera. Básicamente, hay dos formas de hacer esto: haces muchos cálculos enteros de 64 bits o necesitas más de 4 memorias mapeadas GiByte. Si uno o ambos son ciertos, tiene sentido usar software de 64 bits, de lo contrario no lo hace.
Nota: hay algunas arquitecturas donde no hay variantes correspondientes de 32 o 64 bits. En ese caso, la pregunta obviamente no tiene sentido. Los más conocidos son IA64, que tiene solo 64 bits y no tiene una variante de 32 bits, y x86 / AMD64 que, aunque están estrechamente relacionados, son arquitecturas diferentes , x86 es solo de 32 bits, AMD64 es solo de 64 bits.
En realidad, esa última afirmación ya no es 100% cierta. Linux agregó recientemente el x32 ABI, que le permite ejecutar código AMD64 con punteros de 32 bits, por lo que, aunque no es una arquitectura de CPU "adecuada", es una forma de utilizar la arquitectura AMD64 de manera tal que tuviera un nativo Variante de 32 bits. Esto se hizo precisamente porque el rendimiento de arriba he mencionado anteriormente estaba causando reales medibles, cuantificables problemas para los usuarios del mundo real que ejecutan código del mundo real en los sistemas del mundo real.
fuente
Si el software necesita interactuar directamente con sistemas, controladores o bibliotecas heredados, entonces es posible que deba proporcionar una versión de 32 bits, ya que AFAIK el sistema operativo en general (definitivamente Windows y Linux AFAIK) no permite la mezcla de 64 bits y 32 -código de bit dentro de un proceso.
Por ejemplo, si su software necesita acceder a hardware especializado, no es raro que los clientes operen modelos más antiguos para los que solo hay disponibles controladores de 32 bits.
fuente
Si su software es una DLL, DEBE proporcionar versiones de 32 bits y de 64 bits. No tiene idea de si el cliente utilizará software de 32 o 64 bits para comunicarse con la DLL, y la DLL debe usar la misma longitud de bits que la aplicación. Esto no es negociable.
Si su software es un ejecutable independiente, es menos claro. Si no necesita que su software se ejecute en sistemas operativos más antiguos, es posible que no necesite proporcionar una versión de 32 bits. Simplemente manténgase en 64 bits, especifique que requiere un sistema operativo de 64 bits y haga el trabajo.
Sin embargo, si necesita que su software se ejecute en sistemas operativos más antiguos, es posible que NO desee proporcionar una versión de 64 bits. Si tiene dos versiones, entonces tiene el doble de pruebas, y probar el software correctamente en una variedad de versiones de sistema operativo e idiomas no es un proceso rápido. Dado que el software de 32 bits se ejecuta perfectamente en una plataforma de 64 bits, todavía es bastante común que el software se lance solo como 32 bits, especialmente por desarrolladores más pequeños.
También tenga en cuenta que la mayoría de los móviles son de 32 bits. Tal vez algunos de alta gama ahora tienen 64 bits, pero hay pocas razones convincentes para dar ese paso. Entonces, si está desarrollando multiplataforma y podría querer que su código también se ejecute en Android, quedarse con 32 bits es una opción segura.
fuente