Denna artikel är en spegelartikel om maskinöversättning, klicka här för att hoppa till originalartikeln.

Utsikt: 24478|Svar: 2

[Källa] C# prestandaoptimering: Lazy initierar lazy med <T>en fördröjning

[Kopiera länk]
Publicerad på 2019-06-17 16:17:17 | | | |
1. Översikt

Det krävs mycket förbrukning för att skapa ett objekt, och detta objekt kanske inte används under körningen, så för att undvika att skapa objektet varje gång används lat initialisering (även kallad lat instansiering).

Fördröjd initialisering sker i . NET 4.0, som främst används för att förbättra prestandan, undvika slöseri med beräkningar och minska programminneskraven. Det kan också kallas on-demand-lastning.

2. Grundläggande grammatik


3. Implementera med exempel

Börja med att skapa en studentklass med följande kod:

Skapa ett konsolprogram med följande kod:

Efter att ha satt brytpunkten för felsökning upptäckte jag att efter nytt var värdet i Student's IsValueCreated falskt och värdet på värdet var null



Sedan, när man anropar egenskapen Namn, är värdet av studentens IsValueCreated sant, och värdet av värdet är inte längre null



Resultat av löpning:



Det kan ses att Student initieras endast när attributet Namn matas ut, det vill säga den initieras när den används första gången, för att uppnå syftet att minska förbrukningen.

Detta exempel är enkelt och det <T>mest grundläggande sättet att använda Lazy. Vi kan också använda<T> Lazys överbelastningsfunktion, Lazy<T> (Func<T>), för att skicka in en delegat med ett returvärde för att sätta egenskapsvärdet för Lazy initialiseringsobjektet.

Resultat av löpning:



Observera:<T> Lazy-objekt-initiering är trådsäker som standard, och i en multitrådad miljö kommer den första tråden som får tillgång till<T> Lazy-objektets egenskap Value att initiera<T> Lazy-objektet, och efterföljande åtkomsttrådar kommer att använda den initialiserade datan för första gången.

4. Tillämpningsscenarier

Det finns ett objekt som har mycket överhead att skapa, och programmet kanske inte använder det. Till exempel, anta att ditt program laddar flera instanser av objekt vid uppstart, men att bara några instanser behöver köras omedelbart. Du kan förbättra programmets uppstartsprestanda genom att skjuta upp initialiseringen av onödiga objekt tills de nödvändiga objekten har skapats.






Föregående:Avslöja några sanningar om intervjun
Nästa:Användarmanual för JCSHELL-testverktyget
Publicerad på 2019-06-18 18:18:32 |
Nåväl, jag fattar
 Hyresvärd| Publicerad på 2023-07-04 19:19:55 |
Hur Lazy in C# håller trådarna säkra
https://www.itsvse.com/thread-10621-1-1.html
Friskrivning:
All programvara, programmeringsmaterial eller artiklar som publiceras av Code Farmer Network är endast för lärande- och forskningsändamål; Ovanstående innehåll får inte användas för kommersiella eller olagliga ändamål, annars kommer användarna att bära alla konsekvenser. Informationen på denna sida kommer från internet, och upphovsrättstvister har inget med denna sida att göra. Du måste helt radera ovanstående innehåll från din dator inom 24 timmar efter nedladdning. Om du gillar programmet, vänligen stöd äkta programvara, köp registrering och få bättre äkta tjänster. Om det finns något intrång, vänligen kontakta oss via e-post.

Mail To:help@itsvse.com