Ez a cikk egy tükör gépi fordítás, kérjük, kattintson ide, hogy ugorjon az eredeti cikkre.

Nézet: 24478|Válasz: 2

[Forrás] C# teljesítményoptimalizálás: Lazy késleltetéssel inicializálja a lustát <T>

[Linket másol]
Közzétéve 2019. 06. 17. 16:17:17 | | | |
1. Áttekintés

Sok fogyasztást igényel egy objektum létrehozása, és ez az objektum nem feltétlenül használható a futtatás során, ezért annak elkerülése érdekében, hogy minden alkalommal létrejöjjön, lusta inicializáció (más néven lusta instanciáció) lép be.

Késleltetett inicializáció . A NET 4.0-t elsősorban a teljesítmény javítására, a számítás pazarlásának elkerülésére és a programmemória igények csökkentésére használják. Ezt nevezhető igény szerinti betöltésnek is.

2. Alapvető nyelvtan


3. Példákkal történő megvalósítás

Kezdjük azzal, hogy létrehozz egy diákosztályt a következő kóddal:

Hozz létre konzolprogramot a következő kóddal:

Miután beállítottam a hibakeresés töréspontját, azt tapasztaltam, hogy az új után a Student IsValueCreated értéke hamis, és az érték értéke nulla



Ezután, amikor a Név tulajdonságot hívjuk, a hallgató IsValueCreated értéke igaz, és az érték már nem null



Futás eredménye:



Látható, hogy a Student csak akkor inicializálódik, amikor a Név attribútum kimenete van, vagyis az első használatkor inicializálják, hogy csökkentsék a fogyasztást.

Ez a példa egyszerű és a <T>legegyszerűbb módja a Lazy használatának. <T> Használhatjuk a Lazy túlterhelés függvényét, a Lazy<T> (Func<T>) funkcióját is, hogy továbbítsunk egy delegátumot visszatérési értékkel a lazy inicializációs objektum tulajdonságértékének beállításához.

Futás eredménye:



Megjegyzés: A lazy<T> objektum inicializálása alapértelmezés szerint szálbiztonságú, és többszálas környezetben az első szál, amely<T> eléri a Lazy objektum Value tulajdonságát, inicializálja a Lazy<T> objektumot, és a következő hozzáférési szálak először használják az inicializált adatokat.

4. Alkalmazási forgatókönyvek

Van egy objektum, amelynek sok többletterhelése van, és a program feltétlenül nem használja azt. Tegyük fel, hogy a programod indításkor több objektumpéldányt tölt be, de csak néhány példányt kell azonnal végrehajtani. Javíthatod a program indítási teljesítményét azzal, hogy a felesleges objektumok inicializálását késlelteted, amíg a szükséges objektumok létrejöttek.






Előző:Árulj el néhány igazságot az interjúval kapcsolatban
Következő:A JCSHELL teszteszköz használati útmutatója
Közzétéve 2019. 06. 18. 18:18:32 |
Hát, megvan.
 Háziúr| Közzétéve 2023. 07. 04. 19:19:55 |
Hogyan tartja biztonságban a C# lustasága a szálakat
https://www.itsvse.com/thread-10621-1-1.html
Lemondás:
A Code Farmer Network által közzétett összes szoftver, programozási anyag vagy cikk kizárólag tanulási és kutatási célokra szolgál; A fenti tartalmat nem szabad kereskedelmi vagy illegális célokra használni, különben a felhasználók viselik az összes következményet. Az oldalon található információk az internetről származnak, és a szerzői jogi vitáknak semmi köze ehhez az oldalhoz. A fenti tartalmat a letöltés után 24 órán belül teljesen törölni kell a számítógépéről. Ha tetszik a program, kérjük, támogassa a valódi szoftvert, vásároljon regisztrációt, és szerezzen jobb hiteles szolgáltatásokat. Ha bármilyen jogsértés történik, kérjük, vegye fel velünk a kapcsolatot e-mailben.

Mail To:help@itsvse.com