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é
.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)
#Nouveau #dans #.NET #Performances #générateur #source #dexpression #régulière
1692420808