See artikkel on masintõlke peegelartikkel, palun klõpsake siia, et hüpata algse artikli juurde.

Vaade: 24478|Vastuse: 2

[Allikas] C# jõudluse optimeerimine: Lazy initsialiseerib Lazy <T>viivitusega

[Kopeeri link]
Postitatud 17.06.2019 16:17:17 | | | |
1. Ülevaade

Objekti loomine nõuab palju kulutusi ja seda objekti ei pruugita jooksu ajal kasutada, seega et objekti loomise vältimiseks tuleb mängu laisk initsialiseerimine (tuntud ka kui laisk instantsiatsioon).

Viivitusega initsialiseerimine toimub . NET 4.0, mida kasutatakse peamiselt jõudluse parandamiseks, raisatud arvutuse vältimiseks ja programmimälu nõuete vähendamiseks. Seda võib nimetada ka nõudmisel laadimiseks.

2. Põhigrammatika


3. Rakenda näidetega

Alusta õpilasklassi loomisega järgmise koodiga:

Loo konsooliprogramm järgmise koodiga:

Pärast silumise katkestuspunkti määramist avastasin, et pärast uut oli Studenti IsValueCreated väärtus vale ja väärtuse väärtus null



Seejärel, kui kutsuda nime omadust, on õpilase IsValueCreated väärtus tõene ja väärtuse väärtus ei ole enam null



Jooksu tulemus:



On näha, et õpilane initsialiseeritakse ainult siis, kui Nime atribuut on väljund, st see initsialiseeritakse esmakordsel kasutamisel, et saavutada tarbimise vähendamise eesmärk.

See näide on lihtne ja <T>kõige lihtsam viis Lazy kasutamiseks. Saame kasutada<T> ka Lazy ülekoormusfunktsiooni,<T> Lazy (Func<T>), et edastada delegaat tagastusväärtusega, mis määrab lazy initsialiseerimise objekti omadusväärtuse.

Jooksu tulemus:



Märkus: Laisk<T> objekti initsialiseerimine on vaikimisi lõimede jaoks ohutu ning mitmelõimelises keskkonnas initsialiseerib esimene lõim, mis<T> pääseb ligi Lazy objekti Value omadusele, Lazy<T> objekti ning järgnevad juurdepääsulõimed kasutavad esmakordselt initsialiseeritud andmeid.

4. Rakendusstsenaariumid

On objekt, millel on palju lisakoormust, ja programm ei pruugi seda kasutada. Näiteks oletame, et teie programm laadib käivitamisel mitu objekti eksemplari, kuid vaid mõned instantsid tuleb kohe käivitada. Saate parandada oma programmi käivitustulemust, lükates ebavajalike objektide initsialiseerimise edasi kuni vajalike objektide loomiseni.






Eelmine:Avalda mõned tõed intervjuu kohta
Järgmine:JCSHELL testimistööriista kasutusjuhend
Postitatud 18.06.2019 18:18:32 |
Noh, sain kätte
 Üürileandja| Postitatud 04.07.2023 19:19:55 |
Kuidas Lazy C#-s hoiab niidid turvalisena
https://www.itsvse.com/thread-10621-1-1.html
Disclaimer:
Kõik Code Farmer Networki poolt avaldatud tarkvara, programmeerimismaterjalid või artiklid on mõeldud ainult õppimiseks ja uurimistööks; Ülaltoodud sisu ei tohi kasutada ärilistel ega ebaseaduslikel eesmärkidel, vastasel juhul kannavad kasutajad kõik tagajärjed. Selle saidi info pärineb internetist ning autoriõiguste vaidlused ei ole selle saidiga seotud. Ülaltoodud sisu tuleb oma arvutist täielikult kustutada 24 tunni jooksul pärast allalaadimist. Kui sulle programm meeldib, palun toeta originaaltarkvara, osta registreerimist ja saa paremaid ehtsaid teenuseid. Kui esineb rikkumist, palun võtke meiega ühendust e-posti teel.

Mail To:help@itsvse.com