Denne artikkelen er en speilartikkel om maskinoversettelse, vennligst klikk her for å hoppe til originalartikkelen.

Utsikt: 24478|Svare: 2

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

[Kopier lenke]
Publisert på 17.06.2019 16:17:17 | | | |
1. Oversikt

Det krever mye forbruk å lage et objekt, og dette objektet kan ikke brukes under kjøringen, så for å unngå å lage objektet hver gang, kommer lat initialisering (også kalt lat instansiering) i bruk.

Forsinket initialisering skjer i . NET 4.0, som primært brukes for å forbedre ytelsen, unngå bortkastet beregning og redusere kravene til programminne. Det kan også kalles on-demand lasting.

2. Grunnleggende grammatikk


3. Implementer med eksempler

Start med å lage en studentklasse med følgende kode:

Lag et konsollprogram med følgende kode:

Etter å ha satt breakpunktet for feilsøking, fant jeg ut at etter nytt var verdien til Student's IsValueCreated feil og verdien til verdien null



Da, når man kaller Name-egenskapen, er verdien av studentens IsValueCreated sann, og verdien av verdien er ikke lenger null



Løpsresultat:



Det kan sees at Student initialiseres kun når Navn-attributtet sendes ut, det vil si at det initialiseres når det brukes for første gang, for å oppnå formålet å redusere forbruket.

Dette eksempelet er enkelt og den <T>mest grunnleggende måten å bruke Lazy på. Vi kan også bruke<T> Lazys overbelastningsfunksjon, Lazy<T> (Func<T>), for å sende inn en delegat med en returverdi for å sette egenskapsverdien til lat initialiseringsobjektet.

Løpsresultat:



Merk:<T> Lazy-objektinitialisering er trådsikker som standard, og i et flertrådet miljø vil den første tråden som får tilgang til<T> Lazy-objektets Value-egenskap initialisere<T> Lazy-objektet, og påfølgende tilgangstråder vil bruke dataene som initialiseres for første gang.

4. Anvendelsesscenarier

Det finnes et objekt som har mye overhead å lage, og programmet bruker det kanskje ikke. For eksempel, anta at programmet ditt laster inn flere instanser av objekter ved oppstart, men bare noen få instanser trenger å utføres umiddelbart. Du kan forbedre oppstartsytelsen til programmet ditt ved å utsette initialiseringen av unødvendige objekter til etter at de nødvendige objektene er opprettet.






Foregående:Avslør noen sannheter om intervjuet
Neste:Brukermanual for JCSHELL testverktøyet
Publisert på 18.06.2019 18:18:32 |
Vel, skjønner
 Vert| Publisert på 04.07.2023 19:19:55 |
Hvordan Lazy in C# holder trådene trygge
https://www.itsvse.com/thread-10621-1-1.html
Ansvarsfraskrivelse:
All programvare, programmeringsmateriell eller artikler publisert av Code Farmer Network er kun for lærings- og forskningsformål; Innholdet ovenfor skal ikke brukes til kommersielle eller ulovlige formål, ellers skal brukerne bære alle konsekvenser. Informasjonen på dette nettstedet kommer fra Internett, og opphavsrettstvister har ingenting med dette nettstedet å gjøre. Du må fullstendig slette innholdet ovenfor fra datamaskinen din innen 24 timer etter nedlasting. Hvis du liker programmet, vennligst støtt ekte programvare, kjøp registrering, og få bedre ekte tjenester. Hvis det foreligger noen krenkelse, vennligst kontakt oss på e-post.

Mail To:help@itsvse.com