Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Чи існують якісь відмінності між використанням синхронної та асинхронної політики Polly в Mvvmcross


Чи існують якісь відмінності між використанням синхронної та асинхронної політики Polly в Mvvmcross


Порівнюючи синхронну та асинхронну політику Polly в MVVMCross або будь -яку .NET додаток, вступає в декілька відмінностей та міркувань щодо продуктивності:

синхронна політика

1. Блокування природи: синхронні політики блокують, тобто вони виконують завдання послідовно і чекають, коли кожне завдання виконає, перш ніж переходити до наступного. Це може призвести до повільніших показників у сценаріях, що включають операції вводу/виводу або тривалі завдання, оскільки нитка пов'язана з очікуванням, коли операція закінчиться [4] [6].

2. Використання ресурсів: Синхронне програмування, як правило, призводить до більш високого використання ресурсів, оскільки потоки утримуються в стані очікування, споживаючи пам'ять і, можливо, призводять до виснаження пулу, якщо не керовано належним чином [4] [2].

3. Масштабованість: Синхронні підходи менш масштабовані порівняно з асинхронними, особливо в середовищах, що потребують високої одночасності. Вони можуть стати вузькими місцями в системах, що обробляють кілька запитів одночасно [4].

асинхронна політика

1. Неблокуюча природа: Асинхронна політика не блокує, що дозволяє завданням виконувати незалежно, не прив'язуючи нитки. Це покращує чуйність та масштабованість, особливо в сценаріях, що включають операції вводу/виводу або мережеві запити [4] [3].

2. Ефективність ресурсів: асинхронне програмування оптимізує розподіл ресурсів, випускаючи потоки назад до пулу, чекаючи завершення операцій, зменшуючи використання пам'яті та вдосконалюючи використання процесора [4] [2].

3. Масштабованість та пропускна здатність: Асинхронна політика є дуже масштабованою і може ефективно обробляти велику кількість одночасних запитів. Вони особливо корисні в реальних програмах, де навантаження непередбачуваність та нерівномірне розподіл є поширеними [2] [4].

порівняння продуктивності

- пропускна здатність та масштабованість: асинхронні політики, як правило, пропонують кращу пропускну здатність та масштабованість порівняно з синхронними, особливо в сценаріях із непередбачуваними робочими навантаженнями або високими вимогами до одночасності [2] [4].

- Споживання ресурсів: Асинхронна політика, як правило, має менший слід пам’яті та кращий використання процесора порівняно з синхронними, що може призвести до значних переваг продуктивності в середовищах, що обмежуються ресурсами [2] [4].

-Накладні міркування: Хоча асинхронний код може запровадити додаткові накладні витрати через перемикання контексту та управління завданнями, цей накладний витрата часто переважає переваги не блокуючого виконання та ефективного використання ресурсів у сценаріях, пов'язаних з вводу/О [6] [2].

Polly Speech

Поллі підтримує як синхронну, так і асинхронну політику, надаючи такі методи, як "Execute` для синхронних операцій та" виконавець "для асинхронних [3]. При використанні Polly в MVVMcross або подібних рамках, вибір між синхронною та асинхронною політикою залежить від конкретних вимог вашої програми, наприклад, чи передбачає вона операції вводу/виводу, або потребує обробки великого обсягу одночасних запитів.

Підсумовуючи, асинхронні політики Polly, як правило, пропонують найкращі показники та масштабованість порівняно з синхронними, особливо в сценаріях, що включають операції вводу/виводу або високу одночасність. Однак синхронна політика все ще може бути придатною для простих, послідовних завдань, де передбачуваність та пряме виконання важливіші, ніж масштабованість.

Цитати:
[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-vs-synchronous-programming/
[5] https://stackoverflow.com/questions/59456197/using-polly-fa-reter-attempt-from-an-async-function
.
[7] https://github.com/app-vnext/polly/issues/281
[8] https://github.com/quozd/awesome-dotnet