MVVMCross veya herhangi bir .NET uygulamasındaki eşzamanlı ve eşzamansız Polly politikalarını karşılaştırırken, çeşitli performans farklılıkları ve düşünceleri devreye girer:
Senkron politikalar
1. Doğayı Engelleme: Senkron politikalar engelliyor, yani görevleri sırayla yürütüyorlar ve bir sonrakine geçmeden önce her görevin tamamlanmasını beklerler. Bu, işlemin bitmesini bekleyen iş parçacığı bağlı olduğundan, G/Ç operasyonlarını veya uzun süredir devam eden görevleri içeren senaryolarda daha yavaş performansa yol açabilir [4] [6].
2. Kaynak Kullanımı: Senkron programlama tipik olarak daha yüksek kaynak kullanımı ile sonuçlanır, çünkü iş parçacıkları bekleme durumunda tutulur, bellek tüketir ve potansiyel olarak düzgün yönetilmezse iplik havuzu tükenmesine yol açar [4] [2].
3. Ölçeklenebilirlik: Senkron yaklaşımlar, özellikle yüksek eşzamanlılık gerektiren ortamlarda eşzamansız olanlara kıyasla daha az ölçeklenebilir. Aynı anda birden fazla isteği işleyen sistemlerde darboğaz haline gelebilirler [4].
Asenkron politikalar
1. Engellemeyen doğa: Asenkron politikalar engellenmiyor, bu da görevlerin iş parçacığı bağlamadan bağımsız olarak çalışmasına izin veriyor. Bu, özellikle G/Ç operasyonlarını veya ağ isteklerini içeren senaryolarda duyarlılığı ve ölçeklenebilirliği artırır [4] [3].
2. Kaynak verimliliği: Asenkron programlama, işlemlerin tamamlanmasını beklerken, bellek kullanımını azaltırken ve CPU kullanımını iyileştirirken iş parçacıklarını havuza geri bırakarak kaynak tahsisini optimize eder [4] [2].
3. Ölçeklenebilirlik ve verim: Asenkron politikalar oldukça ölçeklenebilirdir ve çok sayıda eşzamanlı isteği verimli bir şekilde işleyebilir. Özellikle iş yükü öngörülemezliği ve eşit olmayan dağılımın yaygın olduğu gerçek dünya uygulamalarında faydalıdırlar [2] [4].
Performans Karşılaştırması
- Verim ve ölçeklenebilirlik: Asenkron politikalar genellikle senkronize kıyasla, özellikle öngörülemeyen iş yükleri veya yüksek eşzamanlılık gereksinimlerine sahip senaryolarda daha iyi verim ve ölçeklenebilirlik sunar [2] [4].
- Kaynak tüketimi: Asenkron politikalar, kaynak kısıtlı ortamlarda önemli performans avantajlarına yol açabilecek senkronize kıyasla daha düşük bir bellek ayak izine ve daha iyi CPU kullanımına sahip olma eğilimindedir [2] [4].
-Tepegöz Hususlar: Asenkron kod, bağlam anahtarlama ve görev yönetimi nedeniyle ek ek yük getirebilirken, bu yük genellikle bloke etmeyen yürütme ve G/Ç-bağlı senaryolarda verimli kaynak kullanımının faydalarından daha ağır basar [6] [2].
Polly özellikleri
Polly, eşzamanlı hem de eşzamansız politikaları destekler, eşzamanlı işlemler için `` exute '' gibi yöntemler ve eşzamansız olanlar için `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` Executeasync ”'de destekler. MVVMCross veya benzeri çerçevelerde Polly kullanılırken, senkron ve asenkron politikalar arasında seçim yapmak, uygulamanızın G/Ç operasyonlarını içermesi veya yüksek miktarda eşzamanlı istekleri ele alması gerektiği gibi özel gereksinimlere bağlıdır.
Özetle, eşzamansız Polly politikaları, özellikle G/Ç operasyonlarını veya yüksek eşzamanlılığı içeren senaryolarda, eşzamanlı olanlara kıyasla genellikle üstün performans ve ölçeklenebilirlik sunar. Bununla birlikte, senkron politikalar, öngörülebilirliğin ve basit yürütmenin ölçeklenebilirlikten daha önemli olduğu basit, sıralı görevler için uygun olabilir.
Alıntılar:[1] http://www.thepollyproject.org/2019/02/13/custom-policies-for-all-eccoecution-types-custom-polices-part-iv/
[2] https://stackoverflow.com/questions/55823184/does-usynchronous-model--give-benefits-in-throughput-against-properly-conf
[3] https://www.nuget.org/packages/polly/7.2.4
[4] https://kissflow.com/application-dewelopment/asynchronous-vs-synchronous-programming/
[5] https://stackoverflow.com/questions/59456197/using-polly-for-a--tretry-tempt-from-an-async-fcemction
[6] https://learn.microsoft.com/en-us/archive/msdn-magazine/2011/october/asynchronous-programming-usync-portance-undstance-the-costs-of-usync-and-await
[7] https://github.com/app-vnext/polly/issues/281
[8] https://github.com/quozd/awesome-dotnet