Dieser Artikel ist ein Spiegelartikel der maschinellen Übersetzung, bitte klicken Sie hier, um zum Originalartikel zu springen.

Ansehen: 24478|Antwort: 2

[Quelle] C# Performance-Optimierung: Lazy initialisiert lazy mit <T>einer Verzögerung

[Link kopieren]
Veröffentlicht am 17.06.2019 16:17:17 | | | |
1. Überblick

Es erfordert viel Verbrauch, um ein Objekt zu erstellen, und dieses Objekt wird während des Laufs möglicherweise nicht verwendet, daher wird zur Umfangsdauer der Initialisierung (auch lazy Instanziation genannt) eingesetzt.

Verzögerte Initialisierung tritt in auf. NET 4.0, das hauptsächlich dazu dient, die Leistung zu verbessern, Rechenverschwendung zu vermeiden und den Programmspeicherbedarf zu senken. Es kann auch als On-Demand-Loading bezeichnet werden.

2. Grundgrammatik


3. Implementieren Sie mit Beispielen

Beginnen Sie damit, eine Studentenklasse mit folgendem Code zu erstellen:

Erstellen Sie ein Konsolenprogramm mit folgendem Code:

Nachdem ich den Breakpoint für das Debugging gesetzt hatte, stellte ich fest, dass nach einem neuen Wert der Wert von Student's IsValueCreated falsch war und der Wert null war



Dann ist beim Aufrufen der Name-Eigenschaft der Wert von IsValueCreated von student wahr, und der Wert des Wertes ist nicht mehr null



Laufergebnis:



Es ist zu sehen, dass der Student nur dann initialisiert wird, wenn das Name-Attribut ausgegeben wird, also beim ersten Mal verwendet, um den Zweck der Reduzierung des Verbrauchs zu erreichen.

Dieses Beispiel ist einfach und die <T>grundlegendste Art, Lazy zu verwenden. Wir können auch<T> Lazys Überlastfunktion Lazy<T> (Func<T>) verwenden, um einen Delegaten mit einem Rückgabewert zu übergeben, der den Eigenschaftswert des Lazy-Initialisierungsobjekts festlegt.

Laufergebnis:



Hinweis: Die<T> Initialisierung von Lazy-Objekten ist standardmäßig threadsicher, und in einer Multi-Thread-Umgebung initialisiert der erste Thread, der<T> auf die Lazy-Objekt-Eigenschaft Value zugreift, das Lazy-Objekt<T>, und nachfolgende Zugriffsthreads verwenden die initialisierten Daten zum ersten Mal.

4. Anwendungsszenarien

Es gibt ein Objekt, das viel Overhead zu erstellen hat, und das Programm nutzt es möglicherweise nicht. Angenommen, dein Programm lädt beim Start mehrere Objektinstanzen, aber nur wenige Instanzen müssen sofort ausgeführt werden. Sie können die Startleistung Ihres Programms verbessern, indem Sie die Initialisierung unnötiger Objekte verzögern, bis die notwendigen Objekte erstellt wurden.






Vorhergehend:Offenbart einige Wahrheiten über das Interview
Nächster:Benutzerhandbuch für das JCSHELL-Testwerkzeug
Veröffentlicht am 18.06.2019 18:18:32 |
Na gut, verstanden
 Vermieter| Veröffentlicht am 04.07.2023 19:19:55 |
Wie Lazy in C# Threads sicher hält
https://www.itsvse.com/thread-10621-1-1.html
Verzichtserklärung:
Alle von Code Farmer Network veröffentlichten Software, Programmiermaterialien oder Artikel dienen ausschließlich Lern- und Forschungszwecken; Die oben genannten Inhalte dürfen nicht für kommerzielle oder illegale Zwecke verwendet werden, andernfalls tragen die Nutzer alle Konsequenzen. Die Informationen auf dieser Seite stammen aus dem Internet, und Urheberrechtsstreitigkeiten haben nichts mit dieser Seite zu tun. Sie müssen die oben genannten Inhalte innerhalb von 24 Stunden nach dem Download vollständig von Ihrem Computer löschen. Wenn Ihnen das Programm gefällt, unterstützen Sie bitte echte Software, kaufen Sie die Registrierung und erhalten Sie bessere echte Dienstleistungen. Falls es eine Verletzung gibt, kontaktieren Sie uns bitte per E-Mail.

Mail To:help@itsvse.com