Runtime

BenchmarkDotNet ile .NET performansını AI yardımıyla ölçmek ve kanıtlamak

Yazar, BenchmarkDotNet ile bir .NET raporlama metodunu adım adım optimize ediyor ve her değişikliği ayrı ayrı ölçüyor. Yapılan değişikliklerle süre yaklaşık 1,55 saniyeden 11,9 milisaniyeye, bellek tahsisi 33,1 MB'tan 0,23 MB'a düşüyor. Yapay zekânın önerdiği optimizasyonları neden ölçmek ve çıktıyı doğrulamak gerektiğini görmek için okumaya değer.

DEV Community: #csharp Henrique Mauri
Yayın tarihi
Okuma süresi
7 dk okuma
agent çalıştırması #12
agent çalıştırması #12
Orijinale git dev.to

Bu haberi bildir

Özette bir hata mı var, ya da bu içeriğin sahibi misin? Mesajın doğrudan bana e-posta olarak gelir.

Mesaj türü

Kilit noktalar

  • Yapay zekâdan optimizasyon istemeden önce BenchmarkDotNet ve [MemoryDiagnoser] ile ölçüm yapın.
  • Her seferinde tek bir değişiklik yapın ve her adımın süresini ve tahsisini kaydedin.
  • İç içe Where taraması yerine tek geçişli Dictionary hesaplaması en büyük kazancı sağladı (1,5 s'den 40 ms'ye).
  • StringComparer.Ordinal ile HashSet ve TryGetAlternateLookup<ReadOnlySpan<char>> .NET 9 ve sonrasında satır başına string tahsisini önler.
  • Benchmark sayılarına güvenmeden önce her sürümün çıktısını orijinal sonuçla karşılaştırın.

Yazar, yapay zekânın performans önerilerinin çoğunun ölçülmediğini savunuyor: bazıları hiçbir şey değiştirmiyor, bazıları kodu yavaşlatıyor, bazıları da davranışı sessizce değiştiriyor. Örnekte, sipariş satırlarını ayrıştıran, müşteri başına toplam hesaplayan, engelli müşterileri atlayan ve ilk on kaydı döndüren bir rapor metodu ele alınıyor. Süreç bir BenchmarkDotNet ölçümü ve projenin kural dosyasıyla başlıyor; yapay zekâdan sıralı hipotezler ve her seferinde tek bir değişiklik isteniyor.

Değişiklikler ayrı ayrı uygulanıyor: Dictionary ile tek geçişli hesaplama müşteri başına iç içe taramayı kaldırıyor, HashSet engelli müşteri aramalarını hızlandırıyor, .NET 9 ile gelen alternate lookup ve span tabanlı ayrıştırma ise tahsisleri büyük ölçüde azaltıyor. Her sürüm ölçümden önce orijinal çıktıyla karşılaştırılıyor. .NET 10 üzerinde süre yaklaşık 1,55 saniyeden 12 milisaniyeye, bellek tahsisi 33 MB'tan 0,23 MB'a düşüyor.

Gerçek dünyada kullanımı

  • Büyük sınırlandırılmış metin dosyalarını ayrıştırıp müşteri bazında toplam çıkaran gece toplu işleri.
  • Sık çağrılan ve GC baskısı yaratan bir ASP.NET Core raporlama endpoint'i.
  • Repodaki bir benchmark ile desteklenen, yapay zekânın ürettiği performans yamalarını pull request üzerinde incelemek.

Neden önemli

Yapay zekânın performans önerileri birer hipotez olarak ele alınmalı; ölçüm ve çıktı karşılaştırması hangi değişikliğin gerçekten işe yaradığını ve davranışın bozulmadığını gösterir.

Bu özet, DEV Community: #csharp üzerindeki orijinal yazıdan agent tarafından üretildi. Yazının tamamı ve tüm hakları ilgili yazara/yayıncıya aittir. Orijinal yazıya git

Benzer haberler

Geri bildirim

Bir hata mı buldun, bir fikrin mi var? Yazdığın mesaj doğrudan bana e-posta olarak gelir.

Mesaj türü