Événements
Créer des applications et des agents IA
17 mars, 21 h - 21 mars, 10 h
Rejoignez la série de rencontres pour créer des solutions IA évolutives basées sur des cas d’usage réels avec d’autres développeurs et experts.
S’inscrire maintenantCe navigateur n’est plus pris en charge.
Effectuez une mise à niveau vers Microsoft Edge pour tirer parti des dernières fonctionnalités, des mises à jour de sécurité et du support technique.
Vous pouvez optimiser les performances des applications qui utilisent très souvent des expressions régulières en comprenant comment le moteur d’expressions régulières compile les expressions et comment les expressions régulières sont mises en cache. Cet article décrit la compilation, la génération à partir de code source et la mise en cache d’expressions régulières compilées.
Par défaut, le moteur d’expression régulière compile une expression régulière en une séquence d’instructions internes (il s’agit des codes généraux différents de Common Intermediate Language, ou CIL). Quand le moteur exécute une expression régulière, il interprète les codes internes.
Si un objet Regex est construit avec l’option RegexOptions.Compiled, il compile l’expression régulière en code CIL explicite plutôt qu’en instructions internes d’expression régulière générale. Ainsi, le compilateur juste-à-temps (JIT) de .NET convertit l’expression en code machine natif pour de meilleures performances. Le coût de construction de l’objet Regex peut être plus élevé, mais le coût des mises en correspondance avec celui-ci est souvent beaucoup plus faible.
La génération à partir de code source pour les expressions régulières est disponible dans .NET 7 et versions ultérieures. Le générateur de code source émet sous forme de code C# une implémentation dérivée de Regex
personnalisée avec une logique similaire à ce que RegexOptions.Compiled
émet en langage intermédiaire. Vous bénéficiez de tous les avantages en matière de performances de débit de RegexOptions.Compiled
et des avantages de démarrage de Regex.CompileToAssembly
, mais sans la complexité de CompileToAssembly
. La source émise fait partie de votre projet, ce qui signifie qu’elle est facilement visible et débogable.
Si possible, utilisez des expressions régulières générées à partir du code source au lieu de compiler des expressions régulières avec l’option RegexOptions.Compiled. Pour plus d’informations sur les expressions régulières générées à partir de code source, consultez Générateurs de code source d’expressions régulières .NET.
Pour améliorer les performances, le moteur d’expression régulière gère un cache à l’échelle de l’application des expressions régulières compilées. Ce cache stocke les modèles d’expression régulière utilisés uniquement dans les appels de méthode statique. (Les modèles d’expression régulière fournis aux méthodes d’instance ne sont pas mis en cache.) La mise en cache évite de réanalyser une expression dans du code d’octet haut niveau chaque fois qu’elle est utilisée.
Le nombre maximal d’expressions régulières mises en cache est déterminé par la valeur de la propriété Regex.CacheSizestatic
(Shared
en Visual Basic). Par défaut, le moteur d’expression régulière met en cache jusqu’à 15 expressions régulières compilées. Si le nombre d’expressions régulières compilées dépasse la taille du cache, l’expression régulière la plus anciennement utilisée est ignorée et la nouvelle expression régulière est mise en cache.
Votre application peut réutiliser des expressions régulières de l’une des deux manières suivantes :
En raison de la surcharge liée à l’instanciation d’objets et à la compilation d’expressions régulières, la création et la destruction rapide d’un grand nombre d’objets Regex est un processus coûteux. Pour les applications qui utilisent un grand nombre d’expressions régulières différentes, vous pouvez optimiser les performances en utilisant des appels de méthodes Regex
statiques et en augmentant éventuellement la taille du cache des expressions régulières.
Commentaires sur .NET
.NET est un projet open source. Sélectionnez un lien pour fournir des commentaires :
Événements
Créer des applications et des agents IA
17 mars, 21 h - 21 mars, 10 h
Rejoignez la série de rencontres pour créer des solutions IA évolutives basées sur des cas d’usage réels avec d’autres développeurs et experts.
S’inscrire maintenantEntrainement
Module
Améliorer le niveau de performance avec un cache dans un projet Aspire .NET - Training
Dans ce module, vous découvrirez les caches dans une application native cloud Aspire .NET et comment les utiliser pour optimiser le niveau de performance de vos microservices.