Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon 在MVVMCross中使用同步和异步Polly策略之间是否存在任何性能差异


在MVVMCross中使用同步和异步Polly策略之间是否存在任何性能差异


在比较MVVMCROSS或任何.NET应用中的同步和异步Polly策略时,有几种绩效差异和考虑因素就起到了作用:

###同步政策

1。阻止性质:同步策略正在阻止,这意味着它们依次执行任务,并等待每个任务完成,然后再继续进行下一个任务。在涉及I/O操作或长期运行任务的方案中,这可能会导致性能较慢,因为线程被绑住了等待操作完成[4] [6]。

2。资源利用:同步编程通常会导致更高的资源使用情况,因为线程保持在等待状态,消耗内存并可能导致线程池耗尽,如果无法正确管理[4] [2]。

3。可伸缩性:与异步方法相比,同步方法的可扩展性较低,尤其是在需要高并发的环境中。它们可以成为同时处理多个请求的系统中的瓶颈[4]。

###异步政策

1。非阻滞性质:异步策略是非障碍物,允许任务独立运行而无需绑定线程。这可以提高响应性和可扩展性,尤其是在涉及I/O操作或网络请求的情况下[4] [3]。

2。资源效率:异步编程通过将线程释放回池,同时等待操作完成,减少内存使用情况并改善CPU利用率[4] [2],从而优化了资源分配。

3。可伸缩性和吞吐量:异步策略是高度可扩展的,可以有效处理大量并发请求。它们在工作负载不可预测性和分布不均的现实应用中特别有益[2] [4]。

###性能比较

- 吞吐量和可扩展性:与同步策略相比,异步策略通常提供更好的吞吐量和可扩展性,尤其是在具有不可预测的工作负载或高并发要求的情况下[2] [4]。

- 资源消耗:与同步相比,异步策略往往具有较低的内存足迹和更好的CPU利用率,这可能会在资源受限的环境中带来显着的性能优势[2] [4]。

- 开销注意事项:虽然由于上下文切换和任务管理,异步代码可以引入其他开销,但在I/O-Bound Scenarios中非阻止执行和有效资源利用的好处通常会超过此开销[6] [2]。

Polly细节

Polly支持同步和异步策略,为同步操作提供诸如`execute'的方法,而`epecuteasync`用于异步方面的方法[3]。在MVVMCross或类似框架中使用Polly时,在同步和异步策略之间进行选择取决于您应用程序的特定要求,例如它是否涉及I/O操作或需要处理大量并发请求。

总而言之,与同步相比,异步Polly策略通常具有较高的性能和可伸缩性,尤其是在涉及I/O操作或高并发性的情况下。但是,同步策略仍然适用于简单的顺序任务,在这些任务中可预测性和直接执行比可伸缩性更重要。

引用:
[1] http://www.thepollyproject.org/2019/02/13/custom-policies-for-al-al-yexecution-types-custom-custom-custom-polcolicies-part-part-part-iv/-
[2] https://stackoverflow.com/questions/55823184/does-asynchronous-model-really-give-benefits-in-throughput-thoughput-against-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-for-a-a-retry-try-atempt-from-an-ashync-function
[6] https://learn.microsoft.com/en-us/archive/mmsdn-magazine/2011/october/asynchronous-programming-programming-ashync-performance-performance-performance-undersanding-the-costs-costs-of-costs-of-ashync-and-andc-and-await
[7] https://github.com/app-vnext/polly/issues/281
[8] https://github.com/quozd/awesome-dotnet