Tento článok je zrkadlovým článkom o strojovom preklade, kliknite sem pre prechod na pôvodný článok.

Pohľad: 24478|Odpoveď: 2

[Zdroj] Optimalizácia výkonu v C#: Lazy inicializuje lazy s <T>oneskorením

[Kopírovať odkaz]
Zverejnené 17. 6. 2019 16:17:17 | | | |
1. Prehľad

Vytvorenie objektu vyžaduje veľa spotreby a tento objekt sa počas behu nemusí používať, takže aby sa predišlo jeho vytváraniu zakaždým, prichádza do hry lenivá inicializácia (nazývaná aj lenivá inštancia).

Oneskorená inicializácia nastáva v . NET 4.0, ktorý sa primárne používa na zlepšenie výkonu, zabránenie zbytočnému výpočtu a zníženie požiadaviek na pamäť programu. Môže sa tiež nazývať načítavanie na požiadanie.

2. Základná gramatika


3. Implementujte s príkladmi

Začnite vytvorením triedy Študent s nasledujúcim kódom:

Vytvorte konzolový program s nasledujúcim kódom:

Po nastavení breakpointu pre ladenie som zistil, že po novom som zistil, že hodnota Student's IsValueCreated bola nepravdivá a hodnota hodnoty nulová



Potom, pri volaní vlastnosti Name, hodnota študentovho IsValueCreated je pravdivá a hodnota hodnoty už nie je nulová



Výsledok behu:



Je vidieť, že Študent je inicializovaný iba vtedy, keď je atribút Name vypísaný, teda je inicializovaný pri prvom použití, aby sa dosiahol účel zníženia spotreby.

Tento príklad je jednoduchý a <T>najzákladnejší spôsob, ako použiť Lazy. Môžeme tiež použiť<T> preťažovaciu funkciu Lazy, Lazy<T> (Func<T>), na odoslanie delegáta s vrátenou hodnotou na nastavenie hodnoty vlastnosti objektu inicializačnej lenivosti.

Výsledok behu:



Poznámka:<T> Inicializácia Lazy objektu je štandardne bezpečná pre vlákna a v prostredí s viacerými vláknami prvé vlákno, ktoré pristupuje<T> k vlastnosti Hodnota objektu Lazy, inicializuje objekt Lazy<T> a nasledujúce prístupové vlákna použijú inicializované dáta po prvýkrát.

4. Aplikačné scenáre

Existuje objekt, ktorý má veľkú režijnú záťaž na vytvorenie a program ho nemusí používať. Napríklad, predpokladajme, že váš program pri štarte načíta niekoľko inštancií objektov, ale len niekoľko inštancií musí byť okamžite spustených. Môžete zlepšiť štartovací výkon svojho programu tým, že odložíte inicializáciu nepotrebných objektov až po vytvorení potrebných objektov.






Predchádzajúci:Prezradzte niekoľko pravd o rozhovore
Budúci:Používateľský manuál pre testovací nástroj JCSHELL
Zverejnené 18. 6. 2019 18:18:32 |
No, rozumiem
 Prenajímateľ| Zverejnené 4. 7. 2023 19:19:55 |
Ako lenivosť v C# chráni vlákna
https://www.itsvse.com/thread-10621-1-1.html
Vyhlásenie:
Všetok softvér, programovacie materiály alebo články publikované spoločnosťou Code Farmer Network slúžia len na vzdelávacie a výskumné účely; Vyššie uvedený obsah nesmie byť použitý na komerčné alebo nezákonné účely, inak nesú všetky následky používateľmi. Informácie na tejto stránke pochádzajú z internetu a spory o autorské práva s touto stránkou nesúvisia. Musíte úplne vymazať vyššie uvedený obsah zo svojho počítača do 24 hodín od stiahnutia. Ak sa vám program páči, podporte originálny softvér, zakúpte si registráciu a získajte lepšie originálne služby. Ak dôjde k akémukoľvek porušeniu, kontaktujte nás prosím e-mailom.

Mail To:help@itsvse.com