.NET 7.0’daki yenilikler [27]: Normal ifade kaynağı oluşturucu performansı

Womanne

Member
Geçerli .NET 7.0, seride daha önce tanıttığım yeni bir kaynak kodu oluşturucu ile birlikte gelir. Sınıf yerine açıklama için kullanabilirsiniz. RegEx somutlaştırmak için:

Duyuru








Dr Holger Schwichtenberg, güvenlikle ilgili son derece kritik alanlarda bile yenilik ve deneyim odaklı yazılım geliştirme sunan MAXIMAGO’da Baş Teknoloji Uzmanıdır. Aynı zamanda, çok sayıda orta ölçekli ve büyük şirketi yazılım geliştirme ve işletim konusunda 38 tanınmış uzmanla danışmanlık ve eğitimle destekleyen uzman ağı www.IT-Visions.de’nin başkanıdır.







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();
}



Bir performans karşılaştırması (bkz. Şekil 1), yeni kaynak oluşturucunun bir normal ifadenin tek seferlik yürütülmesi için en hızlı varyant olduğunu gösterir. 100 tekrarlanan kullanımda işler biraz farklı görünüyor. Burada, derlemenin yalnızca bir kez gerçekleşmesi koşuluyla, çalışma zamanında derlenen çözüm açıkça kazanır:


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;
}



RegEx nesnesini yalnızca bir kez başlatırsanız, yorumlanan değişken de daha hızlıdır:


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;
}



Kaynak oluşturucuyu kullanırken, kısmi sınıf örneğini yeniden kullanmanız veya tekrar tekrar oluşturmanız çok fark etmez, çünkü oluşturulan kod, Şekil 1’de gösterildiği gibi, normal ifadenin statik bir üyesini kullanır.

Duyuru







Normal ifade kaynağı üretecinin RegEx sınıfı uygulamalarıyla performans karşılaştırması (Şekil 1)



.NET 7.0, sınıfı kullanırken normal ifade performansını da geliştirir RegEx. Microsoft, ayrıntıları bir blog gönderisinde açıklıyor.


(rm)



Haberin Sonu
 
Üst