Cet article est un article miroir de traduction automatique, veuillez cliquer ici pour accéder à l’article original.

Vue: 24478|Répondre: 2

[Source] Optimisation des performances C# : Lazy initialise lazy avec <T>un délai

[Copié le lien]
Publié sur 17/06/2019 16:17:17 | | | |
1. Aperçu

Il faut beaucoup de consommation pour créer un objet, et cet objet peut ne pas être utilisé pendant la course, donc pour éviter de créer l’objet à chaque fois, une initialisation paresseuse (appelée instanciation paresseuse) entre en jeu.

L’initialisation différée se produit dans . NET 4.0, qui est principalement utilisé pour améliorer les performances, éviter le gaspillage de calcul et réduire les besoins en mémoire du programme. On peut aussi appeler cela le chargement à la demande.

2. Grammaire de base


3. Implémenter avec des exemples

Commencez par créer une classe Étudiant avec le code suivant :

Créez un programme console avec le code suivant :

Après avoir défini le point d’arrêt pour le débogage, j’ai constaté qu’après nouvelle, la valeur de IsValueCreated de Student était fausse et la valeur de valeur nul



Alors, lors de l’appel de la propriété Nom, la valeur de l’IsValueCreated de l’étudiant est vraie, et la valeur de la valeur n’est plus nulle



Résultat de la série :



On peut voir que l’Étudiant n’est initialisé que lorsque l’attribut Nom est sorti, c’est-à-dire qu’il est initialisé lors de sa première utilisation, afin d’atteindre l’objectif de réduire la consommation.

Cet exemple est simple et la <T>façon la plus basique d’utiliser la paresse. Nous pouvons également utiliser<T> la fonction de surcharge de Lazy, Lazy<T> (Func<T>), pour faire passer un délégué avec une valeur de retour afin de définir la valeur de propriété de l’objet d’initialisation paresseuse.

Résultat de la série :



Note :<T> L’initialisation d’un objet paresseux est par défaut thread-safe, et dans un environnement multithread, le premier thread à accéder<T> à la propriété Value de l’objet Lazy initialisera l’objet Lazy<T> objet, et les threads d’accès suivants utiliseront les données initialisées pour la première fois.

4. Scénarios d’application

Il y a un objet qui a beaucoup de surcharge à créer, et le programme peut ne pas l’utiliser. Par exemple, supposons que votre programme charge plusieurs instances d’objets au démarrage, mais que seules quelques instances doivent être exécutées immédiatement. Vous pouvez améliorer les performances de démarrage de votre programme en retardant l’initialisation des objets inutiles jusqu’à ce que ceux-ci soient créés.






Précédent:Révéler quelques vérités sur l’entretien
Prochain:Manuel d’utilisation de l’outil de test JCSHELL
Publié sur 18/06/2019 18:18:32 |
Bon, compris
 Propriétaire| Publié sur 04/07/2023 19:19:55 |
Comment la paresse en C# protège les threads
https://www.itsvse.com/thread-10621-1-1.html
Démenti:
Tous les logiciels, supports de programmation ou articles publiés par Code Farmer Network sont uniquement destinés à l’apprentissage et à la recherche ; Le contenu ci-dessus ne doit pas être utilisé à des fins commerciales ou illégales, sinon les utilisateurs assumeront toutes les conséquences. Les informations sur ce site proviennent d’Internet, et les litiges de droits d’auteur n’ont rien à voir avec ce site. Vous devez supprimer complètement le contenu ci-dessus de votre ordinateur dans les 24 heures suivant le téléchargement. Si vous aimez le programme, merci de soutenir un logiciel authentique, d’acheter l’immatriculation et d’obtenir de meilleurs services authentiques. En cas d’infraction, veuillez nous contacter par e-mail.

Mail To:help@itsvse.com