Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Есть ли какие -либо различия в производительности между использованием синхронной и асинхронной политики Полли в MVVMcross


Есть ли какие -либо различия в производительности между использованием синхронной и асинхронной политики Полли в MVVMcross


При сравнении синхронной и асинхронной политики Полли в 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 специфики

Полли поддерживает как синхронную, так и асинхронную политику, предоставляя такие методы, как «Execute» для синхронных операций и `executeAsync` для асинхронных [3]. При использовании Polly в MVVMcross или аналогичных рамках выбор между синхронной и асинхронной политикой зависит от конкретных требований вашего приложения, например, включает ли он операции ввода -вывода или необходимость обработки высокого объема одновременных запросов.

Таким образом, асинхронная политика Полли, как правило, обеспечивает превосходную производительность и масштабируемость по сравнению с синхронными, особенно в сценариях, связанных с операциями ввода -вывода или высокой параллельностью. Тем не менее, синхронные политики могут по -прежнему подходить для простых, последовательных задач, где предсказуемость и простое выполнение более важны, чем масштабируемость.

Цитаты:
[1] http://www.thepollyproject.org/2019/02/13/custom-policies-for-all-excution-types-custom-policies-part-iv/
[2] https://stackoverflow.com/questions/55823184/does-asynchronous-model-really-give-benefits-in-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-a-tretry-attempt-from-an-async-функция
[6] https://learn.microsoft.com/en-us/archive/msdn-magazine/2011/october/asynchronous-programming-async-performance-sresting-the-costs-of-async-and-await
[7] https://github.com/app-vnext/polly/issues/281
[8] https://github.com/quozd/awesome-dotnet