Pri primerjavi sinhronih in asinhronih politik Polly v MVVMcross ali kakršni koli .NET aplikaciji pride v poštev več razlik in premislekov uspešnosti:
Sinhrone politike
1. Blokiranje narave: Sinhrone politike blokirajo, kar pomeni, da opravijo naloge zaporedno in počakajo, da se vsaka naloga konča, preden se premakne na naslednjo. To lahko privede do počasnejših zmogljivosti v scenarijih, ki vključujejo I/O operacije ali dolgotrajne naloge, saj je nit vezana na čakanje, da se operacija konča [4] [6].
2. Uporaba virov: Sinhrono programiranje običajno povzroči večjo porabo virov, ker se nitke zadržujejo v čakalnem stanju, ki porabi pomnilnik in potencialno vodi do izčrpanosti bazena, če se ne upravlja pravilno [4] [2].
3. razširljivost: sinhroni pristopi so manj razširljivi v primerjavi z asinhronimi, zlasti v okoljih, ki zahtevajo visoko sočasnost. Lahko postanejo ozka grla v sistemih, ki hkrati obravnavajo več zahtev [4].
Asinhrone politike
1. Ne-blokarna narava: asinhrone politike ne blokirajo, kar omogoča, da naloge delujejo neodvisno, ne da bi privezali niti. To izboljšuje odzivnost in razširljivost, zlasti v scenarijih, ki vključujejo I/O operacije ali omrežne zahteve [4] [3].
2. Učinkovitost virov: asinhrono programiranje optimizira razporeditev virov tako, da sprosti niti v bazen, medtem ko čakajo, da se operacije dokončajo, zmanjšajo uporabo pomnilnika in izboljšajo uporabo CPU [4] [2].
3. razširljivost in pretok: asinhrone politike so zelo razširljive in lahko učinkovito obravnavajo veliko število sočasnih zahtev. Posebej so koristni v aplikacijah v resničnem svetu, kjer sta nedvomljivost delovne obremenitve in neenakomerna porazdelitev pogosta [2] [4].
Primerjava uspešnosti
- pretok in razširljivost: asinhrone politike na splošno ponujajo boljšo prepustnost in razširljivost v primerjavi s sinhronimi, zlasti v scenarijih z nepredvidljivimi delovnimi obremenitvami ali visokimi zahtevami sočasnosti [2] [4].
- Poraba virov: asinhrone politike imajo ponavadi nižji odtis pomnilnika in boljšo uporabo CPU v primerjavi s sinhronimi, kar lahko privede do pomembnih prednosti uspešnosti v okoljih, omejenih z viri [2] [4].
-Režijski premisleki: Medtem ko lahko asinhrona koda uvede dodatne režijske stroške zaradi preklopa konteksta in upravljanja nalog, to režijsko stroške pogosto odtehtajo prednosti ne-blokadonja in učinkovite uporabe virov v scenarijih, ki so vezani na I/O [6] [2].
Polly Posebnosti
Polly podpira tako sinhrone in asinhrone politike, ki zagotavlja metode, kot so `Execute` za sinhrone operacije in` ExecutionAsync` za asinhrone [3]. Pri uporabi Polly v MVVMcross ali podobnih okvirih je izbira med sinhrono in asinhrono politiko odvisna od posebnih zahtev vaše aplikacije, na primer, ali vključuje I/O operacije ali potrebe po veliki količini sočasnih zahtev.
Če povzamemo, asinhrone politike Polly na splošno nudijo vrhunsko zmogljivost in razširljivost v primerjavi s sinhronimi, zlasti v scenarijih, ki vključujejo I/O operacije ali visoko sočasnost. Vendar so lahko sinhrone politike še vedno primerne za preproste, zaporedne naloge, kjer sta predvidljivost in preprosta izvedba pomembnejša od razširljivosti.
Navedbe:[1] http://www.thepollyproject.org/2019/02/13/custom-policies-for-all-execution-ypes-custom-policies-part-iv/
[2] https://stackoverflow.com/questions/55823184/does-asynchronos-model-really-give--give--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-for-a-retry-attept-from-async-funkcija
[6] https://learn.microsoft.com/en-us/archive/msdn-magazine/2011/october/asynchronous-programming-async-performance-razumevanje-the-costs-of-async-inwait
[7] https://github.com/app-vnext/polly/isissue/281
[8] https://github.com/quozd/awesome-dotnet