Tengo una aplicación que tiene ~ 1,000,000 cadenas en la memoria por razones de rendimiento. Mi aplicación consume ~ 200 MB de RAM.Cómo reducir la huella de memoria en aplicaciones intensivas de cadenas .NET?
Quiero reducir la cantidad de memoria consumida por las cadenas.
Sé .NET representa cadenas en codificación UTF-16 (2 bytes por char). La mayoría de las cadenas en mi aplicación contienen caracteres ingleses puros, por lo que su almacenamiento en codificación UTF-8 será 2 veces más eficiente que UTF-16.
¿Hay alguna manera de almacenar una cadena en la memoria con codificación UTF-8 y al mismo tiempo permitir las funciones de cadena estándar? (Mis necesidades incluyen principalmente IndexOf con StringComparison.OrdinalIgnoreCase).
¿Qué pasa con el uso de una matriz de bytes o 'List'? Sin embargo, no estoy seguro de cuánto más difícil sería trabajar con estos objetos para sus necesidades. –
@DxCK, ¿"quiere" o "necesita"? La diferencia es importante para proporcionar respuestas interesantes o prácticas. –
¿Tiene absolutamente que cargar todas las 1,000,000 cadenas en la memoria? ¿Puede proporcionar más detalles sobre qué está haciendo exactamente con todas estas cadenas en la memoria? –