Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Czy istnieją jakieś różnice wydajności między stosowaniem synchronicznych i asynchronicznych polityk polly w MVVMCROSS


Czy istnieją jakieś różnice wydajności między stosowaniem synchronicznych i asynchronicznych polityk polly w MVVMCROSS


Porównując synchroniczne i asynchroniczne polityki Polly w MVVMCROSS lub dowolnej aplikacji .NET, pojawia się kilka różnic wydajności i rozważań:

Zasady synchroniczne

1. Blokowanie natury: Zasady synchroniczne blokują, co oznacza, że ​​wykonują zadania sekwencyjnie i czekają na wykonanie każdego zadania przed przejściem do następnego. Może to prowadzić do wolniejszej wydajności w scenariuszach obejmujących operacje we/wy lub długotrwałe zadania, ponieważ wątek jest związany, czekając na zakończenie operacji [4] [6].

2. Wykorzystanie zasobów: Programowanie synchroniczne zwykle powoduje wyższe wykorzystanie zasobów, ponieważ wątki są przechowywane w stanie oczekiwania, zużywając pamięć i potencjalnie prowadzące do wyczerpania puli wątków, jeśli nie jest to właściwie zarządzane [4] [2].

3. Skalowalność: Podejścia synchroniczne są mniej skalowalne w porównaniu do asynchronicznych, szczególnie w środowiskach wymagających wysokiej współbieżności. Mogą stać się wąskie gardła w systemach obsługujących wiele żądań jednocześnie [4].

polityki asynchroniczne

1. Natura nie blokująca: Polityki asynchroniczne nie są blokujące, umożliwiając niezależne zadania bez wiązania wątków. Poprawia to reakcję i skalowalność, szczególnie w scenariuszach obejmujących operacje we/wy lub żądania sieci [4] [3].

2. Wydajność zasobów: Programowanie asynchroniczne optymalizuje przydział zasobów, uwalniając wątki z powrotem do puli podczas oczekiwania na zakończenie operacji, zmniejszając zużycie pamięci i poprawę wykorzystania procesora [4] [2].

3. Skalowalność i przepustowość: Zasady asynchroniczne są wysoce skalowalne i mogą skutecznie obsługiwać dużą liczbę współbieżnych żądań. Są one szczególnie korzystne w rzeczywistych aplikacjach, w których spredywalność obciążenia i nierównomierna dystrybucja jest powszechna [2] [4].

Porównanie wydajności

- przepustowość i skalowalność: Zasady asynchroniczne ogólnie zapewniają lepszą przepustowość i skalowalność w porównaniu z synchronicznymi, szczególnie w scenariuszach z nieprzewidywalnymi obciążeniami lub wymaganiami o wysokiej współbieżności [2] [4].

- Zużycie zasobów: Zasady asynchroniczne mają zwykle niższy ślad pamięci i lepsze wykorzystanie procesora w porównaniu do synchronicznych, co może prowadzić do znacznych zalet wydajności w środowiskach ograniczonych przez zasoby [2] [4].

-Rozważania dotyczące ogólnych: podczas gdy kod asynchroniczny może wprowadzić dodatkowe koszty ogólne ze względu na przełączanie kontekstu i zarządzanie zadaniami, ten koszt narzutowy jest często przeważa przez korzyści płynących z wykonywania nielokowania i wydajnego wykorzystania zasobów w scenariuszach związanych z I/O [6] [2].

Polly Specyfics

Polly obsługuje zarówno zasady synchroniczne, jak i asynchroniczne, zapewniając metody takie jak `` Execute 'dla operacji synchronicznych i „executeasync` dla asynchronicznych [3]. Podczas korzystania z Polly w MVVMCROSS lub podobnych ramach wybór między zasadami synchronicznymi i asynchronicznymi zależy od konkretnych wymagań aplikacji, takich jak to, czy obejmuje operacje we/wy lub musi obsłużyć dużą liczbę współbieżnych żądań.

Podsumowując, asynchroniczne polityki polly ogólnie zapewniają doskonałą wydajność i skalowalność w porównaniu z synchronicznymi, szczególnie w scenariuszach obejmujących operacje we/wy lub wysoką współbieżność. Jednak zasady synchroniczne mogą być nadal odpowiednie do prostych, sekwencyjnych zadań, w których przewidywalność i proste wykonywanie są ważniejsze niż skalowalność.

Cytaty:
[1] http://www.thepollyproject.org/2019/02/13/custom-policies-for-all-execution-types-custom-polities-part-iv/
[2] https://stackoverflow.com/questions/55823184/does-asynchronous-model-reallly-give-benefits-in-rughput-against-properly-conf
[3] https://www.nuget.org/packages/polly/7.2.4
[4] https://kissflow.com/application-development/asynchronous-vs-synchronous-programing/
[5] https://stackoverflow.com/questions/59456197/using-polly-for-a-retric-attpt-from-an-async-function
[6] https://learn.microsoft.com/en-us/archive/msdn-magazine/2011/october/asynchronious-programming-async-performance-undering-the-tosts-of-async-and-await
[7] https://github.com/app-vnext/polly/issues/281
[8] https://github.com/quozd/awesome-dotnet