Halasztott végrehajtás és lusta kiértékelés (LINQ–XML)
A lekérdezési és tengelyműveleteket gyakran halasztott végrehajtással hajtják végre. Ez a cikk ismerteti a késleltetett végrehajtás követelményeit és előnyeit, valamint néhány megvalósítási szempontot.
Halasztott végrehajtás
A késleltetett végrehajtás azt jelenti, hogy egy kifejezés kiértékelése késleltetve lesz, amíg a realizált értékre ténylegesen szükség nem lesz. A késleltetett végrehajtás nagy mértékben javíthatja a teljesítményt, ha nagy adatgyűjteményeket kell manipulálnia, különösen olyan programokban, amelyek láncolt lekérdezéseket vagy manipulációkat tartalmaznak. A legjobb esetben a késleltetett végrehajtás csak egyetlen iterációt tesz lehetővé a forrásgyűjteményen keresztül.
A LINQ-technológiák széles körben használják a késleltetett végrehajtást az alaposztályok System.Linq tagjaiban és a különböző LINQ-névterek bővítménymetóriáiban, például System.Xml.Linq.Extensions.
A halasztott végrehajtást közvetlenül a C# nyelven támogatja a hozam (C# referencia) kulcsszó (az yield-return
utasítás formájában), ha iterátorblokkban használják. Az ilyen iterátornak típusgyűjteményt IEnumerator vagy IEnumerator<T> (vagy származtatott típust) kell visszaadnia.
Buzgó és lusta kiértékelés
Ha halasztott végrehajtást megvalósító metódust ír, azt is el kell döntenie, hogy lusta kiértékeléssel vagy lelkes kiértékeléssel valósítja-e meg a metódust.
- A lusta kiértékelés során a forrásgyűjtemény egyetlen eleme lesz feldolgozva az iterátor minden egyes hívása során. Ez az iterátorok implementálásának tipikus módja.
- A lelkes kiértékelés során az iterátor első hívása a teljes gyűjtemény feldolgozását eredményezi. Szükség lehet a forrásgyűjtemény ideiglenes másolatára is. A metódusnak például OrderBy az első elem visszaadása előtt rendeznie kell a teljes gyűjteményt.
A lusta kiértékelés általában jobb teljesítményt nyújt, mivel egyenletesen osztja el a többletterhelés-feldolgozást a gyűjtemény kiértékelése során, és minimalizálja az ideiglenes adatok használatát. Bizonyos műveletek esetében természetesen nincs más lehetőség, mint a köztes eredmények megvalósulása.
Halasztott végrehajtási példa a C# és a Visual Basic programozási halasztott végrehajtására.
Lásd még
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: