Šis raksts ir mašīntulkošanas spoguļraksts, lūdzu, noklikšķiniet šeit, lai pārietu uz oriģinālo rakstu.

Skats: 24478|Atbildi: 2

[Avots] C# veiktspējas optimizācija: Lazy inicializē slinku ar <T>aizkavēšanos

[Kopēt saiti]
Publicēts 17.06.2019 16:17:17 | | | |
1. Pārskats

Lai izveidotu objektu, ir nepieciešams liels patēriņš, un šo objektu var neizmantot skrējiena laikā, tāpēc, lai izvairītos no objekta izveides katru reizi, tiek izmantota slinka inicializācija (saukta arī par slinku instantiāciju).

Aizkavēta inicializācija notiek . NET 4.0, kas galvenokārt tiek izmantots, lai uzlabotu veiktspēju, izvairītos no izšķērdētiem aprēķiniem un samazinātu programmas atmiņas prasības. To var saukt arī par ielādi pēc pieprasījuma.

2. Pamata gramatika


3. Īstenot ar piemēriem

Sāciet ar studentu klases izveidi ar šādu kodu:

Izveidojiet konsoles programmu ar šādu kodu:

Pēc atkļūdošanas pārtraukuma punkta iestatīšanas es atklāju, ka pēc jauna studenta IsValueCreated vērtība bija nepatiesa un vērtības vērtība bija nulle



Pēc tam, izsaucot rekvizītu Name, studenta IsValueCreated vērtība ir patiesa, un vērtības vērtība vairs nav nulle



Izpildes rezultāts:



Var redzēt, ka students tiek inicializēts tikai tad, kad tiek izvadīts atribūts Nosaukums, tas ir, tas tiek inicializēts, kad tas tiek izmantots pirmo reizi, lai sasniegtu patēriņa samazināšanas mērķi.

Šis piemērs ir vienkāršs un <T>visvienkāršākais veids, kā lietot Lazy. Mēs varam arī izmantot<T> Lazy pārslodzes funkciju Lazy<T> (Func<T>), lai nodotu pārstāvi ar atgriešanās vērtību, lai iestatītu slinkā inicializācijas objekta rekvizīta vērtību.

Izpildes rezultāts:



Piezīme: Lazy<T> objekta inicializācija pēc noklusējuma ir droša pret pavedieniem, un vairāku pavedienu vidē pirmais pavediens, kas piekļūst<T> Lazy objekta rekvizītam Value<T>, inicializēs Lazy objektu, un turpmākie piekļuves pavedieni izmantos pirmo reizi inicializētos datus.

4. Lietošanas scenāriji

Ir objekts, kuram ir daudz pieskaitāmo izdevumu, un programma to var neizmantot. Piemēram, pieņemsim, ka startēšanas laikā programma ielādē vairākus objektu gadījumus, bet tikai daži gadījumi ir jāizpilda nekavējoties. Programmas startēšanas veiktspēju var uzlabot, aizkavējot nevajadzīgo objektu inicializāciju līdz nepieciešamo objektu izveidei.






Iepriekšējo:Atklājiet dažas patiesības par interviju
Nākamo:JCSHELL testa rīka lietotāja rokasgrāmata
Publicēts 18.06.2019 18:18:32 |
Nu, sapratu
 Saimnieks| Publicēts 04.07.2023 19:19:55 |
Kā Lazy in C# saglabā pavedienus drošībā
https://www.itsvse.com/thread-10621-1-1.html
Atruna:
Visa programmatūra, programmēšanas materiāli vai raksti, ko publicē Code Farmer Network, ir paredzēti tikai mācību un pētniecības mērķiem; Iepriekš minēto saturu nedrīkst izmantot komerciāliem vai nelikumīgiem mērķiem, pretējā gadījumā lietotājiem ir jāuzņemas visas sekas. Informācija šajā vietnē nāk no interneta, un autortiesību strīdiem nav nekāda sakara ar šo vietni. Iepriekš minētais saturs ir pilnībā jāizdzēš no datora 24 stundu laikā pēc lejupielādes. Ja jums patīk programma, lūdzu, atbalstiet oriģinālu programmatūru, iegādājieties reģistrāciju un iegūstiet labākus oriģinālus pakalpojumus. Ja ir kādi pārkāpumi, lūdzu, sazinieties ar mums pa e-pastu.

Mail To:help@itsvse.com