Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Vannak -e valamilyen teljesítménybeli különbség a szinkron és aszinkron polly politikák használata között az mvvmcross -ban


Vannak -e valamilyen teljesítménybeli különbség a szinkron és aszinkron polly politikák használata között az mvvmcross -ban


A szinkron és aszinkron polly politikák összehasonlításakor az mvvmcross vagy bármely .NET alkalmazásban számos teljesítménybeli különbség és megfontolások jelentkeznek:

szinkron politikák

1. A természet blokkolása: A szinkron politikák blokkolnak, azaz a feladatokat egymás után hajtják végre, és várják meg az egyes feladatokat, mielőtt továbblépnének a következőre. Ez lassabb teljesítményhez vezethet az I/O műveleteket vagy a hosszú távú feladatokat érintő forgatókönyvekben, mivel a szál megköti, várva, hogy a művelet befejeződjön [4] [6].

2. erőforrás -felhasználás: A szinkron programozás általában magasabb erőforrás -felhasználást eredményez, mivel a szálakat várakozási állapotban tartják, memóriát fogyasztva és potenciálisan a szálak kimerültségéhez vezetnek, ha nem megfelelően kezelik [4] [2].

3. Skálázhatóság: A szinkron megközelítések kevésbé skálázhatók az aszinkronokhoz képest, különösen a magas párhuzamos környezetben. Szűk keresztmetszetekké válhatnak a több kérést egyszerre kezelő rendszerekben [4].

aszinkron politikák

1. nem blokkoló természet: Az aszinkron politikák nem blokkolnak, lehetővé téve a feladatok számára, hogy függetlenül futhassanak a szálak összekapcsolása nélkül. Ez javítja a reakcióképességet és a méretezhetőséget, különösen az I/O műveleteket vagy a hálózati kérelmeket érintő forgatókönyvekben [4] [3].

2. erőforrás -hatékonyság: Az aszinkron programozás optimalizálja az erőforrás -elosztást azáltal, hogy a szálakat visszaadja a medencébe, miközben várja a műveletek befejezését, csökkentve a memóriafelhasználást és javítva a CPU felhasználását [4] [2].

3. Skálázhatóság és átviteli sebesség: Az aszinkron politikák nagyon skálázhatók és hatékonyan képesek kezelni a sok egyidejű kérést. Különösen előnyösek a valós alkalmazásokban, ahol a munkaterhelés kiszámíthatatlansága és az egyenetlen eloszlás gyakori [2] [4].

Teljesítmény -összehasonlítás

- Átadási és méretezhetőség: Az aszinkron politikák általában jobb teljesítményt és skálázhatóságot kínálnak a szinkronokhoz képest, különösen a kiszámíthatatlan munkaterheléssel vagy a magas párhuzamos követelményekkel rendelkező forgatókönyvekben [2] [4].

- Erőforrás-fogyasztás: Az aszinkron politikák általában alacsonyabb memória-lábnyomot és jobb CPU-felhasználást mutatnak a szinkronokhoz képest, ami jelentős teljesítmény-előnyöket eredményezhet az erőforrásokkal korlátozott környezetben [2] [4].

-Általános megfontolások: Noha az aszinkron kód további általános költségeket vezethet be a kontextusváltás és a feladatkezelés miatt, ezt az általános költségeket gyakran meghaladja a nem blokkoló végrehajtás előnyei és az erőforrások hatékony felhasználása az I/O-kötött forgatókönyvekben [6] [2].

Polly specifikumok

Polly támogatja mind a szinkron, mind az aszinkron politikákat, olyan módszereket biztosítva, mint a szinkron műveletek „Execute” és az aszinkronok „végrehajtása” és „végrehajtási módszer” [3]. A Polly használatakor MVVMCross vagy hasonló keretek között, a szinkron és az aszinkron politikák közötti választás az alkalmazás konkrét követelményeitől függ, például az I/O műveleteket magában foglalja -e, vagy nagy mennyiségű egyidejű kérelem kezelésére van szükség.

Összefoglalva: az aszinkron pollypolitikák általában kiváló teljesítményt és skálázhatóságot kínálnak a szinkronokhoz képest, különösen az I/O műveleteket vagy a magas párhuzamosságot érintő forgatókönyvekben. A szinkron politikák azonban továbbra is alkalmasak lehetnek az egyszerű, szekvenciális feladatokhoz, ahol a kiszámíthatóság és az egyszerű végrehajtás fontosabb, mint a méretezhetőség.

Idézetek:
[1] http://www.thepollyproject.org/2019/02/13/custom-policies-for-all-execution-types-custom-polies-part-iv/
[2] https://stackoverflow.com/questions/55823184/does-asynchronous-model-realy-heefits-in-throutput-gainst-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-prom-an-async-function
[6] https://learn.microsoft.com/en-us/archive/msdn-magazine/2011/october
[7] https://github.com/app-vnext/polly/issues/281
[8] https://github.com/quozd/awesome-dotnet