Tengo una aplicación de consola que permite a los usuarios especificar variables para procesar. Estas variables vienen en tres sabores: cadena, doble y larga (siendo el doble y el largo los tipos más comúnmente utilizados). El usuario puede especificar cualquier variable que le guste y en cualquier orden para que mi sistema pueda manejar eso. Para este fin, en mi aplicación, los estaba almacenando como objetos y luego los fundí o los deshizo según fue necesario. por ejemplo:En C# /. ¿Hace que un tipo dinámico ocupe menos espacio que el objeto?
public class UnitResponse
{
public object Value { get; set; }
}
Mi entendimiento es que los objetos en cajas ocupan un poco más de memoria (unos 12 bytes) de un tipo de valor estándar.
Mi pregunta es: ¿sería más eficiente usar la palabra clave dinámica para almacenar estos valores? Podría sortear el problema del boxeo/unboxing, y si es más eficiente, ¿cómo afectaría esto el rendimiento?
EDITAR
Para proporcionar un cierto contexto y evitar que el "¿está seguro de que está utilizando suficiente memoria RAM para preocuparse por esto" en mi peor de los casos tengo 420.000.000 puntos de datos que preocuparse (60 variables * 7.000.000 de registros). Esto se suma a muchos otros datos que guardo sobre cada variable (incluidos algunos booleanos, etc.). Entonces, reducir la memoria tiene un GRAN impacto.
¿Ha realizado algún perfil? ¿Es esto un boxeo/unboxing realmente un cuello de botella? ¿El uso de RAM de su programa se está disparando? ¿O estás micro-optimizando? – cdhowie
Si hubiera una manera tan simple de evitar el boxeo como parece pensar, ¿por qué crees que el boxeo existe en primer lugar? – Timwi
@cdhowie: Mi programa consume cantidades copiosas de RAM, en algunos casos de 20-30 GB. La reducción del uso de la memoria es imprescindible. –