Denne artikel er en spejling af maskinoversættelse, klik venligst her for at springe til den oprindelige artikel.

Udsigt: 24478|Svar: 2

[Kilde] C# ydelsesoptimering: Lazy initialiserer lazy med <T>en forsinkelse

[Kopier link]
Opslået på 17/06/2019 16.17.17 | | | |
1. Oversigt

Det kræver meget forbrug at skabe et objekt, og dette objekt kan undgås at blive brugt under kørselen, så for at undgå at skabe objektet hver gang, kommer doven initialisering (også kaldet doven instansiering) i spil.

Forsinket initialisering forekommer i . NET 4.0, som primært bruges til at forbedre ydeevnen, undgå spildt beregning og reducere kravene til programhukommelse. Det kan også kaldes on-demand loading.

2. Grundlæggende grammatik


3. Implementér med eksempler

Start med at oprette en Student-klasse med følgende kode:

Opret et konsolprogram med følgende kode:

Efter at have sat breakpunktet for fejlfinding fandt jeg ud af, at efter ny var værdien af Student's IsValueCreated falsk, og værdien af værdien var null



Når man kalder Name-egenskaben, er værdien af elevens IsValueCreated sand, og værdien af værdien er ikke længere null



Løberesultat:



Det kan ses, at Student først initialiseres, når Name-attributten outputtes, altså initialiseres, når den bruges første gang, for at opnå formålet med at reducere forbruget.

Dette eksempel er simpelt og den <T>mest grundlæggende måde at bruge Lazy på. Vi kan også bruge<T> Lazys overload-funktion, Lazy<T> (Func<T>), til at sende en delegeret med en returværdi for at sætte egenskabsværdien for det dovne initialiseringsobjekt.

Løberesultat:



Bemærk:<T> Initialisering af dovne objekter er som standard trådsikker, og i et multitrådet miljø vil den første tråd, der får adgang til<T> dovne objektets Value-egenskab, initialisere<T> dovne objektet, og efterfølgende adgangstråde vil bruge de initialiserede data for første gang.

4. Anvendelsesscenarier

Der er et objekt, der har meget overhead at oprette, og programmet bruger det måske ikke. For eksempel, antag at dit program indlæser flere instanser af objekter ved opstart, men kun få instanser behøver at blive udført med det samme. Du kan forbedre opstartspræstationen af dit program ved at udskyde initialiseringen af unødvendige objekter, indtil de nødvendige objekter er oprettet.






Tidligere:Afslør nogle sandheder om interviewet
Næste:Brugermanual til JCSHELL testværktøjet
Opslået på 18/06/2019 18.18.32 |
Nå, forstået
 Udlejer| Opslået på 04/07/2023 19.19.55 |
Hvordan Lazy in C# holder tråde sikre
https://www.itsvse.com/thread-10621-1-1.html
Ansvarsfraskrivelse:
Al software, programmeringsmaterialer eller artikler udgivet af Code Farmer Network er kun til lærings- og forskningsformål; Ovenstående indhold må ikke bruges til kommercielle eller ulovlige formål, ellers skal brugerne bære alle konsekvenser. Oplysningerne på dette site kommer fra internettet, og ophavsretstvister har intet med dette site at gøre. Du skal slette ovenstående indhold fuldstændigt fra din computer inden for 24 timer efter download. Hvis du kan lide programmet, så understøt venligst ægte software, køb registrering og få bedre ægte tjenester. Hvis der er nogen overtrædelse, bedes du kontakte os via e-mail.

Mail To:help@itsvse.com