Ten artykuł jest lustrzanym artykułem tłumaczenia maszynowego, kliknij tutaj, aby przejść do oryginalnego artykułu.

Widok: 24478|Odpowiedź: 2

[Źródło] Optymalizacja wydajności w C#: Lazy inicjuje lazy z <T>opóźnieniem

[Skopiuj link]
Opublikowano 17.06.2019 16:17:17 | | | |
1. Przegląd

Stworzenie obiektu wymaga dużo zużycia, a obiekt ten może nie być używany podczas uruchomienia, więc aby uniknąć tworzenia go za każdym razem, w grę wchodzi leniwe inicjalizowanie (zwane też leniwą instancją).

Opóźniona inicjalizacja występuje w . NET 4.0, który jest przede wszystkim używany do poprawy wydajności, unikania zbędnych obliczeń oraz zmniejszenia wymagań dotyczących pamięci programu. Można to również nazwać ładunkiem na żądanie.

2. Podstawowa gramatyka


3. Implementuj na przykładach

Zacznij od stworzenia klasy Student z następującym kodem:

Stwórz program konsolowy z następującym kodem:

Po ustawieniu punktu przerwania do debugowania zauważyłem, że po nowości wartość Student's IsValueCreated była fałszywa, a wartość wartości była zerowa



Wtedy, wywołując własność Name, wartość IsValueCreated studenta jest prawdziwa, a wartość wartości nie jest już nullowa



Wynik biegu:



Widać, że Student jest inicjalizowany dopiero wtedy, gdy atrybut Name zostaje wydrukowany, czyli jest inicjalizowany przy pierwszym użyciu, aby osiągnąć cel ograniczenia zużycia.

Ten przykład jest prosty i najbardziej podstawowy <T>sposób używania Lazy. Możemy także użyć<T> funkcji przeciążenia Lazy, Lazy<T> (Func<T>), aby przekazać delegata z wartością zwrotną i ustawić wartość właściwości obiektu inicjalizacji lazy.

Wynik biegu:



Uwaga:<T> Inicjalizacja obiektów Lazy jest domyślnie bezpieczna dla wątków, a w środowisku wielowątkowym pierwszy wątek, który uzyska dostęp<T> do właściwości Wartość obiektu Lazy, inicjuje obiekt Lazy<T>, a kolejne wątki dostępu po raz pierwszy użyją zainicjowanych danych.

4. Scenariusze zastosowań

Jest obiekt, który ma dużo narzutu do stworzenia i program może go nie wykorzystać. Na przykład, załóżmy, że program ładuje kilka instancji obiektów przy starcie, ale tylko kilka instancji musi być wykonanych od razu. Możesz poprawić wydajność uruchamiania programu, opóźniając inicjalizację niepotrzebnych obiektów aż do momentu ich utworzenia.






Poprzedni:Ujawnij kilka prawd o wywiadzie
Następny:Instrukcja użytkownika narzędzia testowego JCSHELL
Opublikowano 18.06.2019 18:18:32 |
No to rozumiem
 Ziemianin| Opublikowano 04.07.2023 19:19:55 |
Zrzeczenie się:
Całe oprogramowanie, materiały programistyczne lub artykuły publikowane przez Code Farmer Network służą wyłącznie celom edukacyjnym i badawczym; Powyższe treści nie mogą być wykorzystywane do celów komercyjnych ani nielegalnych, w przeciwnym razie użytkownicy ponoszą wszelkie konsekwencje. Informacje na tej stronie pochodzą z Internetu, a spory dotyczące praw autorskich nie mają z nią nic wspólnego. Musisz całkowicie usunąć powyższą zawartość z komputera w ciągu 24 godzin od pobrania. Jeśli spodoba Ci się program, wspieraj oryginalne oprogramowanie, kup rejestrację i korzystaj z lepszych, autentycznych usług. W przypadku naruszenia praw prosimy o kontakt mailowy.

Mail To:help@itsvse.com