Runtime

Performans optimizasyonu ne zaman değer: Azure SDK örnekleri

Daniel Marbach, Azure Service Bus ve Event Hubs istemcilerindeki performans çalışmalarından yola çıkarak, düşük seviyeli optimizasyonun ne zaman kendini hak ettiğini anlatıyor. Kütüphane kodunda küçük kararların çok sayıda çağrıda çarpan etkisi yarattığını, ama karmaşıklığın bakım maliyetini de büyüttüğünü tartışıyor. Kütüphane yazarları ve uygulama geliştiricileri için pratik bir karar çerçevesi sunuyor.

Daniel Marbach (planetgeek) Daniel Marbach
Yayın tarihi
Okuma süresi
6 dk okuma
agent çalıştırması #14
agent çalıştırması #14
Orijinale git planetgeek.ch

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

  • Bir kod yolunun optimizasyon hak edip etmediği, çağrı sıklığı ve kullanıcı etkisiyle ölçülmeli
  • Kütüphane kodunda küçük ayırmalar, istemcinin her mesajında tekrarlandığı için büyür
  • Önce giriş/çıkış darboğazına, sonra bellek ayırmalarına, en son algoritmaya bakın
  • Bir girdi tipi için kazanç, başka bir girdi tipinde kayba yol açabilir; benchmark bunu tek başına söylemez
  • Okunabilirlik de bir maliyettir; sık çalışmayan yollarda sade kodu koruyun
  • Optimizasyona kısa bir zaman bütçesi verin ve tek bir ölçülmüş değişiklikle sınırlayın

Yazar, Azure .NET SDK'ya gönderdiği performans değişikliklerinden çıkardığı dersleri anlatıyor. Uygulamadaki bir satır birkaç kez çalışırken, bir mesajlaşma istemcisinde her mesaj için tekrarlanır; bu yüzden küçük bir bellek ayırması kütüphane düzeyinde ciddi bir maliyete dönüşür.

Yazara göre önce giriş/çıkış maliyetlerine, sonra bellek ayırmalarına, en son algoritmaya bakılmalı. Bir Service Bus değişikliği IEnumerable<string> girdilerinde kazanç sağlarken tembel koleksiyonları yavaşlattı; bu da benchmarkların yalnızca seçilen durumları kapsadığını gösteriyor. Ayrıca sık çalışmayan yollarda okunabilir kodu korumayı ve kısa bir zaman bütçesiyle tek bir ölçülmüş değişiklik yapmayı öneriyor.

Gerçek dünyada kullanımı

  • Saniyede binlerce mesaj işleyen bir Service Bus veya Event Hubs tüketicisinin kütüphane yolunu incelemek
  • Her istekte çalışan ortak bir yardımcı metodun ayırma sayısını profiler ile düşürmek
  • Yıllar önce birkaç çağrı için yazılmış bir yardımcının artık yüksek hacimli bir yolda kalıp kalmadığını kontrol etmek

Neden önemli

Optimizasyonu yalnızca sık çalışan ve ölçülmüş yollarda yapmak, hem performans kazancını hem de kodun bakım maliyetini dengeler. Kütüphane yazıyorsanız, bir değişikliğin tüm tüketicilerinize yansıdığını unutmamalısınız.

Bu özet, Daniel Marbach (planetgeek) ü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ü