La agrupación de cadenas se refiere a dos tipos de optimizaciones del compilador relacionadas con cadenas :
Al procesar el código fuente , el compilador debe colocar cada cadena literal en los metadatos del módulo administrado. Si una sola línea aparece muchas veces en el código fuente, colocar todas esas líneas en los metadatos hará que el archivo resultante crezca.
Para evitar el crecimiento del código, muchos compiladores (incluido el compilador de C# ) almacenan solo una instancia de una cadena literal en los metadatos del módulo. El compilador reemplaza todas las referencias a esta cadena en el código fuente con referencias a su instancia en los metadatos. Esto reduce significativamente el tamaño del módulo. El método no es nuevo: este mecanismo ha existido en los compiladores C / C ++ durante mucho tiempo. En el compilador de Microsoft C/C++, esto se denomina agrupación de cadenas. Esta es otra herramienta que le permite acelerar el procesamiento de cadenas.
Por lo general, una cadena es un objeto grande que requiere un gran bloque de memoria para su funcionamiento . Esta optimización asigna memoria para cadenas solo cuando es necesario, lo que permite que varias variables apunten a la misma cadena de caracteres. Solo si una de las variables cambia su contenido, la cadena se copia.
Existe una optimización similar en los lenguajes recolectados en la basura en la forma en que una cadena es un objeto inmutable y la asignación a=bno crea una nueva cadena. La desventaja de esta solución es que el programador debe conocer y utilizar un mecanismo interno de construcción de cadenas como StringBuilder( Java ).