Beim Vergleich synchroner und asynchroner Polly -Richtlinien in MVVMCross oder einer .NET -Anwendung kommen mehrere Leistungsunterschiede und Überlegungen ins Spiel:
Synchronen Richtlinien
1. Blockierung der Natur: Synchronen Richtlinien blockieren, was bedeutet, dass sie nacheinander Aufgaben ausführen und darauf warten, dass jede Aufgabe erledigt, bevor sie zum nächsten übergehen. Dies kann zu einer langsameren Leistung in Szenarien führen, die E/A-Operationen oder langlebige Aufgaben beinhalten, da der Faden auf die Abschluss des Betriebs wartet [4] [6].
2.
3. Skalierbarkeit: Synchronen Ansätze sind im Vergleich zu asynchronen Ansätzen weniger skalierbar, insbesondere in Umgebungen, die eine hohe Parallelität erfordern. Sie können zu Engpässen in Systemen werden, die gleichzeitig mehrere Anfragen bearbeiten [4].
Asynchrone Richtlinien
1. Nicht blockierende Natur: Asynchrone Richtlinien sind nicht blockiert, sodass Aufgaben unabhängig laufen können, ohne Fäden zu binden. Dies verbessert die Reaktionsfähigkeit und Skalierbarkeit, insbesondere in Szenarien mit E/A -Operationen oder Netzwerkanfragen [4] [3].
2. Ressourceneffizienz: Asynchrone Programmierung optimiert die Ressourcenzuweisung, indem Threads wieder in den Pool freigelassen werden, während die Operationen abgeschlossen, die Speicherverwendung reduziert und die CPU -Auslastung verbessert werden [4] [2].
3. Skalierbarkeit und Durchsatz: Asynchrone Richtlinien sind sehr skalierbar und können eine große Anzahl von gleichzeitigen Anforderungen effizient bearbeiten. Sie sind besonders vorteilhaft in realen Anwendungen, bei denen die Unvorhersehbarkeit der Arbeitsbelastung und die ungleiche Verteilung häufig vorkommen [2] [4].
Leistungsvergleich
- Durchsatz und Skalierbarkeit: Asynchrone Richtlinien bieten im Allgemeinen einen besseren Durchsatz und Skalierbarkeit im Vergleich zu synchronen, insbesondere in Szenarien mit unvorhersehbaren Arbeitsbelastungen oder hohen Anforderungen an die Parallelität [2] [4].
- Ressourcenverbrauch: Asynchrone Richtlinien haben tendenziell einen niedrigeren Speicherpfundwerk und eine bessere CPU-Nutzung im Vergleich zu synchronen, was zu erheblichen Leistungsvorteilen in ressourcenbezogenen Umgebungen führen kann [2] [4].
-Overhead-Überlegungen: Während asynchroner Code aufgrund des Kontextwechsels und der Aufgabenverwaltung zusätzlichen Overhead einführen kann, wird dieser Overhead häufig durch die Vorteile der nicht blockierenden Ausführung und die effiziente Ressourcenauslastung in I/O/O-gebundenen Szenarien überwogen [6] [2].
Polly Einzelheiten
Polly unterstützt sowohl synchrone als auch asynchrone Richtlinien und bietet Methoden wie "Execute" für synchrone Operationen und "Executeasync" für asynchrone [3]. Wenn Polly in MVVMCross- oder ähnlichen Frameworks verwendet wird, hängt die Auswahl zwischen synchronen und asynchronen Richtlinien von den spezifischen Anforderungen Ihrer Anwendung ab, z.
Zusammenfassend bieten asynchrone Polly -Richtlinien im Allgemeinen eine überlegene Leistung und Skalierbarkeit im Vergleich zu synchronen, insbesondere in Szenarien, die I/A -Operationen oder hohe Parallelität betreffen. Synchronen Richtlinien können jedoch immer noch für einfache, sequentielle Aufgaben geeignet sein, bei denen Vorhersehbarkeit und einfache Ausführung wichtiger sind als die Skalierbarkeit.
Zitate:[1] http://www.thepollyproject.org/2019/02/13/custom-policies-for-all-execution-types-custom-policies-part-iv/
[2] https://stackoverflow.com/questions/55823184/does-asynchronous-model-really-give-benefits-throughput-against-properly-conf
[3] https://www.nuget.org/packages/polly/7.2.4
[4] https://kissflow.com/application-development/asynchronous-vss-synchronous-programming/
[5] https://stackoverflow.com/questions/59456197/using-polly-for-a-retry-attempt-from-an-async-function
[6] https://learn.microsoft.com/en-us/archive/msdn-magazine/2011/october/asynchronous-programming-async-performance-verstanding-the-costs-of-async-and-wait
[7] https://github.com/app-vnext/polly/issues/281
[8] https://github.com/quozd/awesome-dotnet