c++ - tipos - ¿Está bien usar enteros de 64 bits en una aplicación de 32 bits?
tipos de datos y su tamaño en bytes (2)
int64_t
que en C y C ++, podemos usar int64_t
, o simplemente de long long
.
Si compilo el código de 32 bits usando estos tipos, ¿sufriré algún problema de rendimiento en máquinas de 64 bits y / o 32 bits ?
Además de guardar algo de RAM, ¿alguna vez tendré un motivo para usar int
?
Después de todo, las entradas de 64 bits son mucho más útiles para almacenar números grandes.
Si compilo el código de 32 bits usando estos tipos, ¿sufriré algún problema de rendimiento en máquinas de 64 bits y / o 32 bits?
Los enteros de 64 bits en arquitecturas de 32 bits requieren dos registros para almacenar el valor *. Los valores de 32 bits requieren solo un registro. Esto es importante porque:
- Es posible que se quede sin registros antes, lo que requiere que los registros se derramen en la memoria. Esto toma más tiempo.
- Cargar y almacenar 2 registros generalmente requiere dos instrucciones, no una.
- Hacer la suma o la resta en los operandos en dos registros requiere dos o más instrucciones, en comparación con solo uno para los operandos en un solo registro.
En pocas palabras, si el rendimiento de 32 bits es importante, no utilice enteros de 64 bits a menos que los necesite.
* Esto es cierto para los procesadores x86, ARM y PowerPC, que cubre la mayoría del programa de personas de procesadores para estos días. Probablemente también sea cierto para la mayoría de los demás procesadores.
Si compilo el código de 32 bits usando estos tipos, ¿sufriré algún problema de rendimiento en máquinas de 64 bits y / o 32 bits?
Su compilador puede necesitar generar varias instrucciones de código de máquina para realizar operaciones en los valores de 64 bits, ralentizando esas operaciones varias veces. Si eso podría ser una preocupación, querría hacer una evaluación comparativa para evaluar el impacto en un programa en particular con datos realistas. Ese problema existe cuando estás ejecutando el ejecutable de 32 bits en una máquina de 32 o 64 bits.
¿alguna vez tendré una razón para usar
int
?
Además del rendimiento y el uso de la memoria, ocasionalmente hay razones para usar int
s porque otras API / secuencias, etc. con las que trabajas usan int
. También hay un valor documental sutil en el uso de int
si es claramente adecuado, de lo contrario, otros programadores pueden perder el tiempo preguntándose por qué se ha salido de su camino para usar un long long
.
Después de todo, las entradas de 64 bits son mucho más útiles para almacenar números grandes.
Mucho más útil para almacenar números muy grandes, seguro, pero eso es relativamente poco frecuente. Si está almacenando algo así como un año o la edad de alguien, no hay un punto en particular en tener 64 bits.