Ця стаття є дзеркальною статтею машинного перекладу, будь ласка, натисніть тут, щоб перейти до оригінальної статті.

Вид: 24478|Відповідь: 2

[Джерело] Оптимізація продуктивності C#: Лінивий ініціалізує лінивий із <T>затримкою

[Копіювати посилання]
Опубліковано 17.06.2019 16:17:17 | | | |
1. Огляд

Створення об'єкта потребує чимало витрат, і цей об'єкт може не використовуватися під час запуску, тому, щоб уникнути створення об'єкта щоразу, входить в гру лінива ініціалізація (також звана лінива інстанція).

Відкладена ініціалізація відбувається в . NET 4.0, який головним чином використовується для підвищення продуктивності, уникнення марних обчислень і зменшення потреб у пам'яті програми. Це також можна назвати завантаженням на вимогу.

2. Базова граматика


3. Реалізуйте за допомогою прикладів

Почніть зі створення студентського класу з таким кодом:

Створіть консольну програму з таким кодом:

Після встановлення точки зупину для налагодження я виявив, що після нового значення Student's IsValueCreated було хибним, а значення значення — null



Тоді, при виклику властивості Name, значення IsValueCreated студента є істинним, і значення значення більше не є нульовим



Результат забігу:



Видно, що Студент ініціалізується лише тоді, коли атрибут Ім'я виведений, тобто при першому використанні, щоб досягти мети зменшення споживання.

Цей приклад простий і <T>найпростіший спосіб використання Lazy. Ми також можемо<T> використати функцію перевантаження Lazy (<T>Func<T>), щоб передати делегата з поверненим значенням для встановлення властивості об'єкта лінивої ініціалізації.

Результат забігу:



Примітка:<T> Ініціалізація лінивих об'єктів за замовчуванням є потоковою, і в багатопотоковому середовищі перший потік, що отримає<T> доступ до властивості Значення об'єкта Lazy, ініціалізує об'єкт Lazy<T>, а наступні потоки доступу вперше використовують ці дані.

4. Сценарії застосування

Є об'єкт, який має багато накладних витрат для створення, і програма може його не використовувати. Наприклад, уявімо, що ваша програма завантажує кілька екземплярів об'єктів при запуску, але потрібно виконати лише кілька екземплярів одразу. Ви можете покращити продуктивність запуску вашої програми, відкладаючи ініціалізацію непотрібних об'єктів до створення необхідних об'єктів.






Попередній:Розкрийте кілька істин про інтерв'ю
Наступний:Керівництво користувача тестового інструменту JCSHELL
Опубліковано 18.06.2019 18:18:32 |
Ну, зрозумів
 Орендодавець| Опубліковано 04.07.2023 19:19:55 |
Як Lazy у C# зберігає теми в безпеці
https://www.itsvse.com/thread-10621-1-1.html
Застереження:
Усе програмне забезпечення, програмні матеріали або статті, опубліковані Code Farmer Network, призначені лише для навчання та досліджень; Вищезазначений контент не повинен використовуватися в комерційних чи незаконних цілях, інакше користувачі несуть усі наслідки. Інформація на цьому сайті надходить з Інтернету, і спори щодо авторських прав не мають до цього сайту. Ви повинні повністю видалити вищезазначений контент зі свого комп'ютера протягом 24 годин після завантаження. Якщо вам подобається програма, будь ласка, підтримуйте справжнє програмне забезпечення, купуйте реєстрацію та отримайте кращі справжні послуги. Якщо є будь-яке порушення, будь ласка, зв'яжіться з нами електронною поштою.

Mail To:help@itsvse.com