Net 9.0 LINQ performans iyileştirmeleri
(blog.ndepend.com).NET 9.0 LINQ performans iyileştirmeleri
-
Span<T>kullanarak yineleme- .NET 9.0'da LINQ performansı büyük ölçüde iyileştirildi.
- Dizileri
Span<T>kullanarak yinelemek performansı artırır. TryGetSpan()yöntemi, bir dizi veya listeyiReadOnlySpan<T>'ye dönüştürerek yineleme hızını artırır.
-
TryGetSpan()yöntemiTryGetSpan(), bir dizi veya listeyiReadOnlySpan<T>'ye dönüştürerek yineleme performansını iyileştirir.- Kod optimizasyonları çok ince ayrıntı seviyesinde yapılmıştır ve performans uzmanları tarafından yazılmıştır.
- Listenin iç dizisi değişebileceği için
CollectionsMarshal.AsSpan()kullanırken dikkatli olmak gerekir.
-
TryGetSpan()çağıranlarTryGetSpan()çağıran yöntemler analiz edildiğinde, birçokEnumerableyönteminin kaynak bir dizi veya liste olduğunda span kullanmayı denediği görülür.yieldkullanan işlemler bu optimizasyondan yararlanamaz.
-
Özelleştirilmiş yineleyiciler
- LINQ'nun dahili
IIListProviderveIPartitiontabanlı yineleyici sınıfları birleştirilerek performans iyileştirildi. - Belirli LINQ çağrı zincirlerini tanıyıp verimli şekilde işleyen özel yineleyiciler oluşturulur.
- LINQ'nun dahili
-
Iterator<T>ve türetilmiş sınıfların uygulanmasıIterator<T>soyut bir sınıftır; türetilmiş sınıflar yalnızca gerekli yöntemleri geçersiz kılar.ListWhereSelectIterator<TSource, TResult>,Where(...).Select(...)zincirini tek bir yineleyici olarak işleyerek performansı artırır.
-
IListSkipTakeIterator<TSource>vaka incelemesiMoveNext()yöntemi gereksiz yinelemeleri önler ve yalnızca_minIndexInclusiveile_maxIndexInclusivearalığındaki öğeleri işler.
GN⁺ özeti
- .NET 9.0'da LINQ performansı önemli ölçüde iyileştirildi; özellikle
Span<T>veTryGetSpan()kullanımıyla yineleme performansı artırıldı. - LINQ'nun iç yapısı optimize edilerek belirli çağrı zincirlerini tanıyan ve bunları verimli şekilde işleyen özel yineleyiciler oluşturuldu.
- Bu iyileştirmeler kod performansını artırmaya yardımcı olur; en güncel .NET sürümüne geçerek bu avantajlardan yararlanabilirsiniz.
- LINQ'ya benzer işlevler sunan diğer kütüphaneler arasında
System.Linq.Asyncde bulunur.
1 yorum
Hacker News yorumları
LINQ'in en kullanışlı yanı
IEnumerablegenişletmesi olması. Bu, C#'ın işlevsel tarzda yazılabilmesini sağlıyordotnet ekibinin araçlara neden daha fazla kaynak ayırmadığını anlamak zor
LINQ performans iyileştirmeleri, Microsoft'un kendi
List<T>uygulamasının performansını iyileştirmeye odaklanıyorLINQ, diller arasındaki başlıca farklılaştırıcı unsurlardan biri
C# ne kadar çok F#'tan bir şeyler alırsa o kadar memnuniyet verici
Başka diller kullanılırken LINQ özleniyor
LINQ kullanmaya başladıktan sonra başka bir şey kullanmak zorlaşıyor
Kapsamlı dotnet web geliştirme öğrenme materyali bulmak zor
Modern .NET kodundaki notasyon çok karmaşık
.NET 9'da performans iyileştirmeleriyle ilgili bir bölüm var
OrderBy(criteria).First()ifadesiMin(criteria)olarak optimize edilebilir