Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
De forma predeterminada, el motor de búsqueda de expresiones regulares compila una expresión regular en una secuencia de instrucciones internas (códigos de alto nivel distintos del lenguaje intermedio de Microsoft o MSIL). Cuando el motor de búsqueda ejecuta una expresión regular, interpreta los códigos internos.
Si se crea un objeto Regex con la opción RegexOptions.Compiled, el motor de búsqueda compila la expresión regular en código MSIL explícito, en lugar de hacerlo en instrucciones internas de expresiones regulares de alto nivel. Esto le permite al compilador Just-in-time (JIT) de .NET Framework convertir la expresión en código máquina nativo para proporcionar un mayor rendimiento.
Sin embargo, el código MSIL generado no se puede descargar. El único modo de descargar código es descargar todo el dominio de la aplicación (es decir, descargar todo el código de la aplicación). De hecho, una vez compilada una expresión regular con la opción RegexOptions.Compiled, .NET Framework nunca libera los recursos utilizados por la expresión compilada, aunque se haya liberado el propio objeto Regex para la recolección de elementos no utilizados.
Debe procurar limitar el número de expresiones regulares distintas que vaya a compilar con la opción RegexOptions.Compiled para evitar que se consuman demasiados recursos. Si una aplicación necesita utilizar un número muy grande o ilimitado de expresiones regulares, cada una de ellas deberá interpretarse, y no compilarse. No obstante, si constantemente se utiliza un número pequeño de expresiones regulares, éstas deben compilarse con RegexOptions.Compiled para que el rendimiento mejore. Otra alternativa consiste en utilizar expresiones regulares precompiladas. Puede compilar todas las expresiones en una dll reutilizable. Así se evita la necesidad de compilar en tiempo de ejecución mientras que aún se beneficia de la velocidad de las expresiones regulares compiladas.
Con objeto de mejorar el rendimiento, el motor de búsqueda de expresiones regulares almacena en caché todas las expresiones regulares de la memoria. De esta forma se evita tener que volver a analizar una expresión en código de bytes de alto nivel cada vez que se utiliza.