Salīdzinot sinhrono un asinhrono Polly politiku MVVMCROSS vai jebkurai .NET lietojumprogrammai, tiek parādītas vairākas veiktspējas atšķirības un apsvērumi:
Sinhronās politikas
1. Dabas bloķēšana: sinhronās politikas bloķē, kas nozīmē, ka tās izpilda uzdevumus secīgi un gaida, kamēr katrs uzdevums tiks pabeigts, pirms pāriet uz nākamo. Tas var izraisīt lēnāku sniegumu scenārijos, kas saistīti ar I/O operācijām vai ilgstošiem uzdevumiem, jo pavediens ir sasaistīts, gaidot operācijas pabeigšanu [4] [6].
2. Resursu izmantošana: Sinhronā programmēšana parasti rada lielāku resursu izmantošanu, jo pavedieni tiek turēti gaidīšanas stāvoklī, patērējot atmiņu un potenciāli izraisot pavedienu kopas izsīkumu, ja tie netiek pareizi pārvaldīti [4] [2].
3. Mērogojamība: sinhronās pieejas ir mazāk mērogojamas, salīdzinot ar asinhronajām, īpaši vidē, kurai nepieciešama augsta vienlaicība. Tie var kļūt par sašaurinājumiem sistēmās, kas vienlaikus apstrādā vairākus pieprasījumus [4].
asinhronās politikas
1. Bloķējoša daba: asinhronā politika nav bloķējoša, ļaujot uzdevumiem darboties patstāvīgi, nesasniedzot pavedienus. Tas uzlabo atsaucību un mērogojamību, jo īpaši scenārijos, kas saistīti ar I/O operācijām vai tīkla pieprasījumiem [4] [3].
2. Resursu efektivitāte: asinhronā programmēšana optimizē resursu sadali, atbrīvojot pavedienus atpakaļ baseinā, gaidot, kamēr operācijas tiks pabeigtas, samazinot atmiņas izmantošanu un uzlabojot CPU izmantošanu [4] [2].
3. Mērogojamība un caurlaidspēja: asinhronā politika ir ļoti pielāgojama un efektīvi var apstrādāt lielu skaitu vienlaicīgu pieprasījumu. Tie ir īpaši izdevīgi reālās pasaules lietojumprogrammās, kurās ir izplatītas darba slodzes neparedzamība un nevienmērīgs sadalījums [2] [4].
Veiktspējas salīdzinājums
- caurlaidspēja un mērogojamība: asinhronā politika parasti piedāvā labāku caurlaidspēju un mērogojamību, salīdzinot ar sinhronajām, it īpaši scenārijos ar neparedzamu darba slodzi vai augstām vienlaicīguma prasībām [2] [4].
- Resursu patēriņš: Asinhronajai politikai ir tendence uz zemāku atmiņas nospiedumu un labāku CPU izmantošanu salīdzinājumā ar sinhronajām, kas var izraisīt ievērojamas veiktspējas priekšrocības resursu ierobežotā vidē [2] [4].
-Pieskaitāmie apsvērumi: Lai arī asinhronā kods var ieviest papildu pieskaitāmās izmaksas konteksta pārslēgšanas un uzdevumu pārvaldības dēļ, šo pieskaitāmu izmaksas bieži atsver, ja nav bloķējošas izpildes un efektīvas resursu izmantošanas priekšrocības I/O saistītajos scenārijos [6] [2].
Polly specifika
Polijs atbalsta gan sinhrono, gan asinhrono politiku, nodrošinot tādas metodes kā “izpildīt” sinhronajām operācijām un `ExecuTeasync` asinhroniskajiem [3]. Izmantojot Polly MVVMCross vai līdzīgos ietvaros, izvēloties starp sinhrono un asinhrono politiku, ir atkarīga no jūsu lietojumprogrammas īpašajām prasībām, piemēram, vai tā ir saistīta ar I/O operācijām vai ir jāizstrādā liels vienlaicīgu pieprasījumu apjoms.
Rezumējot, asinhronās polly politikas parasti piedāvā izcilu veiktspēju un mērogojamību, salīdzinot ar sinhronajām, it īpaši scenārijos, kas saistīti ar I/O operācijām vai lielu vienlaicīgumu. Tomēr sinhronā politika joprojām var būt piemērota vienkāršiem, secīgiem uzdevumiem, kur paredzamība un tieša izpilde ir svarīgāka nekā mērogojamība.
Atsauces:[1] http://www.thepollyproject.org/2019/02/13/custom-policies-for-all-execution-types-custom-picies-part-iv/
[2] https://stackoverflow.com/questions/55823184/does-asynchronous-model-really-give-benefits-in-throught-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-retry-attempt-from-an-aync-function
.
[7] https://github.com/app-vnext/polly/issues/281
[8] https://github.com/quozd/awesome-dotnet