.NET 9.0'da yeni [21]: Depolama tahsisi olmadan şaşırtıcı zincirleri arayın

Womanne

Member
.NET 9.0'da türleri sunar HashSet<T> VE Dictionary<T, T> Biriyle yeni bir unsur yolu ReadOnlySpan<T> aramak için. Bu, dizeler ararken birçok bellek tahsisinden kaçınır.










Holger Schwichtenberg, 53 ünlü uzmanla, danışmanlık ve eğitim yoluyla ve yazılımın geliştirilmesinde çok sayıda orta ölçekli ve büyük şirketi destekleyen uzmanlar ağının teknik direktörüdür. Çok sayıda ulusal ve uluslararası uzman konferansındaki görünümleri, 90'dan fazla uzman kitabı ve 1.500'den fazla uzman makalesi sayesinde Holger Schwichtenberg, Almanya'daki .NET ve Web teknikleri için en iyi uzmanlardan biridir.







Örnek: Yarım -colon ile ayrılmış bir ad miktarında, isim için ad aranmalıdır.



Verilir



HashSet<string> suchwoerter =
new HashSet<string>() { "Müller", "Meier", "Schulze" };
string[] datenbasis = """
Müller;Schwichtenberg;Stropek;Krämer
Huber;Meier;Loje
Schulze;Wenz;Schmaranz
...
""".Split("n");



Daha önceki önceki uygulama .NET 9.0 aşağıdaki gibi görünebilir:



foreach (string line in datenbasis)
{
foreach (string n in line.Split(';')) // String-Allokation
{
if (suchwoerter.Contains(n)) fundstellen1++;
}
}
Console.WriteLine(fundstellen1);



.NET 9.0'dan beri yöntemi araştırma kelimeleri için kullanabilirsiniz GetAlternateLookup() Sözde bir “araştırma” yarattı ve sonra biriyle ReadOnlySpan<char> İle ilgili HashSet<T> aramak:





Kod:
HashSet<T>
suchen:
HashSet<string>.AlternateLookup<ReadOnlySpan<char>> suchwoerter2 =
suchwoerter.GetAlternateLookup<ReadOnlySpan<char>>();

int fundstellen2 = 0;
foreach (string line in datenbasis)
{
ReadOnlySpan<char> lineSpan = line.AsSpan(); // ohne Allokation
foreach (Range range in lineSpan.Split(';'))
{
ReadOnlySpan<char> nameSpan = lineSpan[range]; // ohne Allokation
if (suchwoerter2.Contains(nameSpan)) fundstellen2++;
}
}
Console.WriteLine(fundstellen2);




(RME)




Ne yazık ki, bu bağlantı artık geçerli değil.

Boşa harcanan eşyalara olan bağlantılar, 7 günlük daha büyükse veya çok sık çağrılmışsa gerçekleşmez.


Bu makaleyi okumak için bir Haberler+ paketine ihtiyacınız var. Şimdi yükümlülük olmadan bir hafta deneyin – yükümlülük olmadan!
 
Üst