Questo articolo è un articolo speculare di traduzione automatica, clicca qui per saltare all'articolo originale.

Vista: 24478|Risposta: 2

[Fonte] Ottimizzazione delle prestazioni C#: Lazy inizializza lazy con <T>un ritardo

[Copiato link]
Pubblicato su 17/06/2019 16:17:17 | | | |
1. Panoramica

Creare un oggetto richiede molta consapevolezza, e questo oggetto potrebbe non essere usato durante la runa, quindi per evitare di creare l'oggetto ogni volta, entra in gioco l'inizializzazione pigra (chiamata anche istanziazione pigra).

L'inizializzazione ritardata avviene in . NET 4.0, utilizzata principalmente per migliorare le prestazioni, evitare calcoli sprecati e ridurre i requisiti di memoria del programma. Può anche essere chiamato caricamento on-demand.

2. Grammatica di base


3. Implementa con esempi

Inizia creando una classe per studenti con il seguente codice:

Crea un programma console con il seguente codice:

Dopo aver impostato il punto di interruzione per il debug, ho scoperto che dopo il nuovo risultato, il valore di IsValueCreated di Studente era falso e il valore di valore era nullo



Poi, quando si chiama la proprietà Name, il valore di student's IsValueCreated è vero, e il valore di valore non è più nullo



Risultato della partita:



Si può vedere che lo Studente viene inizializzato solo quando viene prodotto l'attributo Nome, cioè viene inizializzato quando viene usato per la prima volta, per raggiungere lo scopo di ridurre il consumo.

Questo esempio è semplice e il <T>modo più basilare per usare Lazy. Possiamo anche usare<T> la funzione di sovraccarico di Lazy, Lazy<T> (Func<T>), per passare un delegato con un valore di ritorno e impostare il valore della proprietà dell'oggetto di inizializzazione lazy (Lazy initialization).

Risultato della partita:



Nota:<T> L'inizializzazione di oggetti Lazy è thread-safe di default e, in un ambiente multithreaded, il primo thread ad accedere<T> alla proprietà Valore dell'oggetto Lazy inizializzerà<T> l'oggetto Lazy e i thread di accesso successivi utilizzeranno i dati inizializzati per la prima volta.

4. Scenari applicativi

C'è un oggetto che ha molto overhead da creare, e il programma potrebbe non usarlo. Ad esempio, supponiamo che il tuo programma carichi diverse istanze di oggetti all'avvio, ma solo poche istanze debbano essere eseguite immediatamente. Puoi migliorare le prestazioni di avvio del tuo programma ritardando l'inizializzazione di oggetti non necessari fino a quando gli oggetti necessari non sono stati creati.






Precedente:Rivela alcune verità sull'intervista
Prossimo:Manuale utente per lo strumento di test JCSHELL
Pubblicato su 18/06/2019 18:18:32 |
Bene, capito
 Padrone di casa| Pubblicato su 04/07/2023 19:19:55 |
Come la pigrizia in C# mantiene i thread al sicuro
https://www.itsvse.com/thread-10621-1-1.html
Disconoscimento:
Tutto il software, i materiali di programmazione o gli articoli pubblicati dalla Code Farmer Network sono destinati esclusivamente all'apprendimento e alla ricerca; I contenuti sopra elencati non devono essere utilizzati per scopi commerciali o illegali, altrimenti gli utenti dovranno sostenere tutte le conseguenze. Le informazioni su questo sito provengono da Internet, e le controversie sul copyright non hanno nulla a che fare con questo sito. Devi eliminare completamente i contenuti sopra elencati dal tuo computer entro 24 ore dal download. Se ti piace il programma, ti preghiamo di supportare software autentico, acquistare la registrazione e ottenere servizi autentici migliori. In caso di violazione, vi preghiamo di contattarci via email.

Mail To:help@itsvse.com