Mi pregunta es básicamente sobre cómo el compilador de C# maneja la asignación de memoria de tipos de datos pequeños. Sé que, por ejemplo, los operadores como add se definen en int y no en short, por lo que los cálculos se ejecutarán como si los cortos fueran miembros int.¿El uso de tipos de datos pequeños (por ejemplo, corto en lugar de int) reduce el uso de memoria?
Suponiendo lo siguiente:
- No hay lógica en la lógica de negocio/validación asociada con la elección de corto como un tipo de datos
- No estamos haciendo nada con código no seguro
¿El uso el tipo de datos cortos, siempre que sea posible, reduce la huella de memoria de mi aplicación y ¿es aconsejable hacerlo? O está utilizando el uso de palabras cortas y similares que no valen la pena ya que el compilador asigna la cantidad total de memoria de un int32 por ejemplo y agrega conversiones adicionales al hacer aritmética.
Cualquier enlace sobre el supuesto impacto en el rendimiento del tiempo de ejecución sería muy apreciado.
preguntas relacionadas:
Why should I use int instead of a byte or short in C#
Integer summing blues, short += short problem
¿Tiene alguna información adicional sobre el impacto en el rendimiento del tiempo de ejecución? Efectivamente, usar short en lugar de int reducirá la huella de memoria, pero cuando afecta el rendimiento del tiempo de ejecución en la mayoría de los casos, no valdría la pena el esfuerzo. – thekip
@thekip: Eche un vistazo a la especificación [Common Language Infrastructure (CLI)] (http://www.ecma-international.org/publications/files/ECMA-ST/ECMA-335.pdf). Hay algunas elaboraciones sobre cómo se maneja 'short 'en el nivel CLI. –
Gracias por su respuesta, el capítulo 12.1.2 dice La CLI define una pila de evaluación que contiene enteros de 4 bytes u 8 bytes; sin embargo, también tiene un modelo de memoria que abarca enteros de 1 y 2 bytes. Entonces la pila solo contiene enteros de 4 bytes (por lo tanto int32 y no int16)? – thekip