Тази статия е огледална статия за машинен превод, моля, кликнете тук, за да преминете към оригиналната статия.

Изглед: 24478|Отговор: 2

[Източник] C# оптимизация на производителността: Lazy инициализира мързеливия с <T>забавяне

[Копирай линк]
Публикувано в 17.06.2019 г. 16:17:17 ч. | | | |
1. Обзор

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

Забавената инициализация се случва в . NET 4.0, който основно се използва за подобряване на производителността, избягване на излишни резултати и намаляване на изискванията за програмна памет. Може да се нарече и зареждане по заявка.

2. Основна граматика


3. Имплементирайте с примери

Започнете с създаване на студентски клас със следния код:

Създайте конзолна програма със следния код:

След като зададох точката на прекъсване за дебъгване, установих, че след нов запис стойността на Student's IsValueCreated е невярна, а стойността на стойността е нулева



Тогава, когато се извиква свойството Name, стойността на IsValueCreated на ученика е вярна и стойността вече не е нулева



Резултат от бягането:



Може да се види, че Student се инициализира само когато атрибутът Name е изведен, тоест инициализиран при първата си употреба, с цел постигане на целта за намаляване на потреблението.

Този пример е прост и <T>най-основният начин за използване на Lazy. Можем също да<T> използваме функцията за претоварване на Lazy,<T> Lazy (Func<T>), за да подадем делегат с връщана стойност, за да зададем стойността на свойството на обекта за lazy initialization.

Резултат от бягането:



Забележка:<T> Инициализацията на мързеливи обекти по подразбиране е безопасна за нишки, а в многонишкова среда първата нишка, която получи<T> достъп до свойството Стойност на Lazy обекта, ще инициализира<T> обекта Lazy, а следващите нишки за достъп ще използват инициализираните данни за първи път.

4. Сценарии на приложение

Има обект, който има много натоварване за създаване и програмата може да не го използва. Например, да предположим, че програмата ви зарежда няколко инстанции на обекти при стартиране, но само няколко инстанции трябва да се изпълнят веднага. Можете да подобрите стартиращата производителност на програмата си, като забавите инициализацията на ненужните обекти до създаването на необходимите обекти.






Предишен:Разкрийте някои истини за интервюто
Следващ:Ръководство за потребителя на тестовия инструмент JCSHELL
Публикувано в 18.06.2019 г. 18:18:32 ч. |
Е, разбрах го
 Хазяин| Публикувано в 4.07.2023 г. 19:19:55 ч. |
Как Lazy in C# пази нишките в безопасност
https://www.itsvse.com/thread-10621-1-1.html
Отричане:
Целият софтуер, програмни материали или статии, публикувани от Code Farmer Network, са само за учебни и изследователски цели; Горното съдържание не трябва да се използва за търговски или незаконни цели, в противен случай потребителите ще понесат всички последствия. Информацията на този сайт идва от интернет, а споровете за авторски права нямат нищо общо с този сайт. Трябва напълно да изтриете горното съдържание от компютъра си в рамките на 24 часа след изтеглянето. Ако ви харесва програмата, моля, подкрепете оригинален софтуер, купете регистрация и получете по-добри услуги. Ако има нарушение, моля, свържете се с нас по имейл.

Mail To:help@itsvse.com