Dit artikel is een spiegelartikel van machinevertaling, klik hier om naar het oorspronkelijke artikel te gaan.

Bekijken: 24478|Antwoord: 2

[Bron] C# prestatieoptimalisatie: Lazy initialiseert lazy met <T>een vertraging

[Link kopiëren]
Geplaatst op 17-06-2019 16:17:17 | | | |
1. Overzicht

Het kost veel consumptie om een object te maken, en dit object mag niet tijdens de run worden gebruikt, dus om te voorkomen dat het object elke keer wordt gemaakt, komt luie initialisatie (ook wel lazy instantie genoemd) in gebruik.

Vertraagde initialisatie vindt plaats in . NET 4.0, dat voornamelijk wordt gebruikt om de prestaties te verbeteren, verspilde berekeningen te voorkomen en de geheugenbehoefte van programma's te verminderen. Het kan ook on-demand laden worden genoemd.

2. Basisgrammatica


3. Implementeren met voorbeelden

Begin met het aanmaken van een Student-klas met de volgende code:

Maak een consoleprogramma met de volgende code:

Na het instellen van het breakpoint voor debuggen ontdekte ik dat na een nieuw nummer de waarde van Student's IsValueCreated onjuist was en de waarde van de waarde null was



Daarna, bij het aanroepen van de eigenschap Name, is de waarde van student's IsValueCreated waar, en is de waarde van de waarde niet langer nul



Run resultaat:



Uit te zien is dat de Student alleen wordt geïnitialiseerd wanneer het Name-attribuut wordt uitgevoerd, dat wil zeggen, het wordt geïnitialiseerd wanneer het voor het eerst wordt gebruikt, om het doel te bereiken van het verminderen van het verbruik.

Dit voorbeeld is eenvoudig en de <T>meest basale manier om Lazy te gebruiken. We kunnen ook<T> de overloadfunctie van Lazy, Lazy<T> (Func<T>), gebruiken om een delegate met een returnwaarde door te geven om de eigenschapswaarde van het lazy initialisatieobject te bepalen.

Run resultaat:



Opmerking: Lazy<T> objectinitialisatie is standaard thread-veilig, en in een multithreaded omgeving zal de eerste thread die<T> toegang krijgt tot de eigenschap Value van het Lazy object het<T> Lazy-object initialiseren, en volgende toegangsthreads gebruiken de geïnitialiseerde data voor het eerst.

4. Toepassingsscenario's

Er is een object dat veel overhead heeft om te maken, en het programma gebruikt het mogelijk niet. Stel bijvoorbeeld dat je programma bij het opstarten meerdere instanties van objecten laadt, maar slechts een paar instanties direct hoeven te worden uitgevoerd. Je kunt de opstartprestaties van je programma verbeteren door de initialisatie van onnodige objecten uit te stellen tot nadat de benodigde objecten zijn aangemaakt.






Vorig:Onthul een paar waarheden over het interview
Volgend:Gebruikershandleiding voor de JCSHELL testtool
Geplaatst op 18-06-2019 18:18:32 |
Nou, begrepen
 Huisbaas| Geplaatst op 04-07-2023 19:19:55 |
Hoe Lazy in C# threads veilig houdt
https://www.itsvse.com/thread-10621-1-1.html
Disclaimer:
Alle software, programmeermaterialen of artikelen die door Code Farmer Network worden gepubliceerd, zijn uitsluitend bedoeld voor leer- en onderzoeksdoeleinden; De bovenstaande inhoud mag niet worden gebruikt voor commerciële of illegale doeleinden, anders dragen gebruikers alle gevolgen. De informatie op deze site komt van het internet, en auteursrechtconflicten hebben niets met deze site te maken. Je moet bovenstaande inhoud volledig van je computer verwijderen binnen 24 uur na het downloaden. Als je het programma leuk vindt, steun dan de echte software, koop registratie en krijg betere echte diensten. Als er sprake is van een inbreuk, neem dan contact met ons op via e-mail.

Mail To:help@itsvse.com