Condividi tramite


Compilazione e riutilizzo

In base all'impostazione predefinita, il modulo delle espressioni regolari consente di compilare un'espressione regolare in una sequenza di istruzioni interne, ovvero di codici ad alto livello diversi dal linguaggio intermedio Microsoft o da MSIL. Quando il modulo di gestione esegue un'espressione regolare, interpreta i codici interni.

Se un oggetto Regex viene creato con l'opzione RegexOptions.Compiled, l'espressione regolare verrà compilata in codice MSIL esplicito anziché nelle istruzioni interne di alto livello utilizzate per le espressioni regolari. In tal modo il compilatore JIT (Just-In-Time) di .NET Framework potrà convertire l'espressione nel codice macchina nativo del computer per ottenere prestazioni migliori.

Non è tuttavia possibile scaricare il codice MSIL generato. L'unico modo per scaricare il codice consiste nello scaricare l'intero dominio applicazione, cioè tutto il codice dell'applicazione. Una volta compilata un'espressione regolare con l'opzione RegexOptions.Compiled, .NET Framework non rilascia mai le risorse utilizzate dall'espressione compilata, anche se l'oggetto Regex stesso viene rilasciato e raccolto da Garbage Collector.

Per evitare un utilizzo eccessivo di risorse, è necessario limitare il numero di espressioni regolari compilate con l'opzione RegexOptions.Compiled. Se è necessario che un'applicazione utilizzi un numero elevato o illimitato di espressioni regolari, è consigliabile che tali espressioni siano interpretate e non compilate. Nel caso si abbia invece un numero ridotto di espressioni regolari utilizzate ripetutamente, sarà preferibile compilarle con RegexOptions.Compiled per ottenere prestazioni migliori. In alternativa è possibile utilizzare espressioni regolari precompilate. È possibile compilare tutte le espressioni in una DLL riutilizzabile. in modo che non sia necessario compilare in fase di esecuzione, pur consentendo di usufruire della velocità delle espressioni regolari compilate.

Per migliorare le prestazioni, il modulo delle espressioni regolari consente di memorizzare nella cache tutte le espressioni regolari. In tal modo non è necessario riconvertire un'espressione in codice di alto livello ogni volta che la si utilizza.

Vedere anche

Altre risorse

Espressioni regolari di .NET Framework