Nouvelles Du Monde

Nouveau dans .NET 7.0 [27]: Performances du générateur de source d’expression régulière

Nouveau dans .NET 7.0 [27]: Performances du générateur de source d’expression régulière

2023-08-18 15:47:00

Le .NET 7.0 actuel est livré avec un nouveau générateur de code source que j’ai présenté dans la partie précédente de la série. Vous pouvez l’utiliser par annotation au lieu de la classe RegEx pour instancier :

Publicité


docteur Holger Schwichtenberg est expert en technologie en chef chez MAXIMAGO, qui propose un développement de logiciels axé sur l’innovation et l’expérience, y compris dans des domaines hautement critiques liés à la sécurité. Il est également à la tête du réseau d’experts www.IT-Visions.de, qui soutient de nombreuses moyennes et grandes entreprises avec des conseils et une formation dans le développement et l’exploitation de logiciels avec 38 experts renommés.

public partial class Checker // Partielle Klasse
{ 
[GeneratedRegex(@"w+([-+.']w+)*@w+([-.]w+)*.w+([-.]w+)*")]
// Partielle Methode, die dann von SG implementiert wird:
public partial Regex EMailRegEx();  
}

Une comparaison des performances (voir Figure 1) montre que le nouveau générateur de source est la variante la plus rapide pour l’exécution unique d’une expression régulière. À 100 utilisations répétées, les choses semblent un peu différentes. Ici, la solution compilée à l’exécution l’emporte clairement, à condition que la compilation ne soit effectuée qu’une seule fois :

Regex re2;
public string ExtractEMail_ClassicCompiledPrepared(string input)
{
  if (re2 == null) re2 = 
    new Regex(@"w+([-+.']w+)*@w+([-.]w+)*.w+([-.]w+)*", 
              RegexOptions.Compiled);
  var m = re2.Match(input);
  return m.Value;
}

La variante interprétée est également plus rapide si vous n’instanciez l’objet RegEx qu’une seule fois :

Regex re1;
public string ExtractEMail_InterpretedPrepared(string input)
{
  if (re1 == null) re1 = 
     new Regex(@"w+([-+.']w+)*@w+([-.]w+)*.w+([-.]w+)*");
  return re1.Match(input).Value;
 }

Lorsque vous utilisez le générateur de source, cela ne fait pas beaucoup de différence que vous réutilisiez l’instance de la classe partielle ou que vous la créiez encore et encore, car le code généré utilise un membre statique de l’expression régulière, comme illustré à la figure 1.

Publicité



Comparaison des performances du générateur source d’expressions régulières avec les applications de la classe RegEx (Fig. 1)

.NET 7.0 améliore également les performances des expressions régulières lors de l’utilisation de la classe RegEx. Détails explique Microsoft dans une entrée de blog.


(rme)

Vers la page d’accueil



#Nouveau #dans #.NET #Performances #générateur #source #dexpression #régulière
1692420808

Facebook
Twitter
LinkedIn
Pinterest

Leave a Comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.

ADVERTISEMENT