Kui võrrelda MVVMCROSS -i sünkroon- ja asünkroonse poliisi poliitikat või mis tahes .NET -rakendust, tulevad mängu mitmed jõudluse erinevused ja kaalutlused:
Sünkroonsed poliitikad
1. looduse blokeerimine: sünkroonsed poliitikad blokeerivad, mis tähendab, et need täidavad järjepidevalt ülesandeid ja ootavad, kuni iga ülesanne enne järgmise juurde liikumist täidab. See võib põhjustada aeglasema jõudlust stsenaariumides, mis hõlmavad I/O toiminguid või pikaajalisi ülesandeid, kuna niit on seotud, kuni operatsioon lõpeb [4] [6].
2. Ressursside kasutamine: sünkroonse programmeerimise tulemuseks on tavaliselt ressursside suurem kasutamine, kuna niite hoitakse ooteseisundis, tarbides mälu ja põhjustades potentsiaalselt niidi basseini ammendumist, kui seda ei hallata õigesti [4] [2].
3. Mastaapsus: sünkroonsed lähenemisviisid on asünkroonsete omadega võrreldes vähem skaleeritavad, eriti suurt samaaegsust vajavates keskkondades. Need võivad muutuda kitsaskohtadeks süsteemides, mis käsitlevad mitut taotlust üheaegselt [4].
asünkroonsed poliitikad
1. mitte blokeeriv olemus: asünkroonsed poliitikad on mitte blokeerivad, võimaldades ülesannetel iseseisvalt töötada ilma niidi sidumata. See parandab reageerimisvõimet ja mastaapsust, eriti stsenaariumide korral, mis hõlmavad I/O toiminguid või võrgutaotlusi [4] [3].
2. Ressursi tõhusus: asünkroonne programmeerimine optimeerib ressursside jaotust, vabastades lõime basseini tagasi, oodates toimingute lõpuleviimist, vähendades mälu kasutamist ja parandades CPU kasutamist [4] [2].
3. Mastaapsus ja läbilaskevõime: asünkroonsed poliitikad on väga skaleeritavad ja suudab tõhusalt hakkama saada suure hulga samaaegsete taotlustega. Need on eriti kasulikud reaalajas rakendustes, kus töökoormus ettearvamatus ja ebaühtlane jaotus on tavalised [2] [4].
jõudluse võrdlus
- Läbilaskvus ja mastaapsus: asünkroonsed poliitikad pakuvad üldiselt paremat läbilaskevõimet ja mastaapsust võrreldes sünkroonsete omadega, eriti ettearvamatute töökoormuste või kõrge samaaegsuse nõuetega stsenaariumide korral [2] [4].
- Ressursside tarbimine: asünkroonsetel poliitikatel on tavaliselt madalam mälujalajälg ja parem protsessorite kasutamine võrreldes sünkroonsete omadega, mis võivad ressurssidega piiratud keskkonnas põhjustada olulisi jõudluse eeliseid [2] [4].
-Üldkulud: Kuigi asünkroonkood võib konteksti lülitamise ja ülesannete haldamise tõttu tutvustada täiendavaid üldkulusid, kaalub see üldkulud sageli üles mitte blokeeriva täitmise ja ressursside tõhusa kasutamise eelised I/O-ga seotud stsenaariumide korral [6] [2].
Polly spetsiifika
Polly toetab nii sünkroonset kui ka asünkroonset poliitikat, pakkudes selliseid meetodeid nagu "Execute" sünkroonsete toimingute jaoks ja asünkroonsete jaoks ExecustEasync [3]. Polly kasutamisel MVVMcrossis või sarnastes raamistikes sõltub sünkroonsete ja asünkroonsete poliitikate vahel valimine teie rakenduse erinõuetest, näiteks kas see hõlmab I/O -toiminguid või peab hakkama saama suure hulga samaaegsete taotlustega.
Kokkuvõtlikult pakuvad asünkroonsed polly poliitikad üldiselt suurepäraseid jõudlust ja mastaapsust võrreldes sünkroonsete omadega, eriti stsenaariumide korral, mis hõlmavad I/O -toiminguid või suurt samaaegsust. Kuid sünkroonsed poliitikad võivad siiski sobida lihtsate, järjestikuste ülesannete jaoks, kus ennustatavus ja sirgjooneline täitmine on olulisem kui mastaapsus.
Tsitaadid:]
]
[3] https://www.nuget.org/packages/polly/7.2.4
]
]
]
[7] https://github.com/app-vnext/polly/issues/281
[8] https://github.com/quozd/awesome-dotnet