No busco mejorar el rendimiento o el uso de la memoria, esta pregunta fue puramente provocada por la curiosidad.¿Cómo se empaquetan los tipos de datos pequeños en C#
pregunta principal Dada la siguiente clase será el compilador de C# (Mono + .NET) empacar las dos variables en short
4 bytes o van a consumir 8 bytes (con la alineación)?
public class SomeClass {
short a;
short b;
}
cuestión secundaria Si la respuesta a la pregunta anterior no era de 4 bytes, lo haría la siguiente oferta alternativa alguna ventaja (donde SomeClass
se utiliza en cantidades muy grandes):
// Warning, my bit math might not be entirely accurate!
public class SomeClass {
private int _ab;
public short a {
get { return _ab & 0x00ff; }
set { _ab |= value & 0x00ff;
}
public short b {
get { return _ab >> 8; }
set { _ab |= value << 8; }
}
}
El compilador de C# no tendrá nada que ver con eso, será el tiempo de ejecución. –
Cuando dice "se usa en cantidades muy grandes", ¿a cuántos estamos hablando y cómo se usan? ¿Estás haciendo una matriz/lista/etc. de estos? –
@ReedCopsey Sí, la teoría de este contexto sería una gran lista con acceso frecuente a entradas específicas por índice. –