Tämä artikkeli on konekäännöksen peiliartikkeli, klikkaa tästä siirtyäksesi alkuperäiseen artikkeliin.

Näkymä: 24478|Vastaus: 2

[Lähde] C#-suorituskyvyn optimointi: Laiska alustaa laiskan <T>viiveellä

[Kopioi linkki]
Julkaistu 17.6.2019 16.17.17 | | | |
1. Yleiskatsaus

Objektin luominen vaatii paljon kulutusta, eikä tätä objektia välttämättä käytetä suorituksen aikana, joten välttääkseen objektin luomisen joka kerta, laiska alustus (eli laiska instanssi) astuu peliin.

Viivästynyt alustus tapahtuu . NET 4.0, jota käytetään ensisijaisesti suorituskyvyn parantamiseen, hukkaan menneen laskennan välttämiseen ja ohjelman muistin vähentämiseen. Sitä voidaan kutsua myös on-demand loadingiksi.

2. Peruskielioppi


3. Toteuta esimerkkien avulla

Aloita luomalla opiskelijaluokka seuraavalla koodilla:

Luo konsoliohjelma seuraavalla koodilla:

Kun määritin virheenkorjauksen katkeamispisteen, huomasin, että uuden jälkeen Studentin IsValueCreatedin arvo oli väärä ja arvon arvo nolla



Tällöin, kun kutsutaan Name-ominaisuutta, opiskelijan IsValueCreated-arvon arvo on tosi, eikä arvon arvo enää ole nolla



Juoksutulos:



On havaittavissa, että Student alustetaan vain, kun Nimi-attribuutti on tulostettu, eli se alustetaan ensimmäisellä käyttökerralla, jotta kulutusta voidaan vähentää.

Tämä esimerkki on yksinkertainen ja yksinkertaisin <T>tapa käyttää laiskaa. Voimme myös käyttää<T> Lazyn ylikuormitusfunktiota, Lazy<T> (Func<T>), välittääksemme delegaatin, jolla on palautusarvo, ja joka määrittää laiskan alustusobjektin ominaisuusarvon.

Juoksutulos:



Huomautus: Laiska<T> objektin alustus on oletuksena säiketurvallista, ja monisäikeisessä ympäristössä ensimmäinen säike, joka käyttää<T> Laiskan objektin Value-ominaisuutta, alustaa Laiskan<T> objektin, ja seuraavat pääsysäikeet käyttävät ensimmäistä kertaa alustettua dataa.

4. Sovellusskenaariot

On olemassa objekti, jolla on paljon ylikuormitusta luotavana, eikä ohjelma välttämättä käytä sitä. Esimerkiksi, jos ohjelmasi lataa useita olioinstansseja käynnistyksessä, mutta vain muutama instanssi tarvitsee suorittaa heti. Voit parantaa ohjelmasi käynnistyssuorituskykyä viivyttämällä tarpeettomien objektien alustusta siihen asti, kunnes tarvittavat objektit on luotu.






Edellinen:Paljasta muutama totuus haastattelusta
Seuraava:JCSHELL-testityökalun käyttöopas
Julkaistu 18.6.2019 18.18.32 |
No, selvä
 Vuokraisäntä| Julkaistu 4.7.2023 19.19.55 |
Kuinka laiska C#:ssa pitää ketjut turvassa
https://www.itsvse.com/thread-10621-1-1.html
Vastuuvapauslauseke:
Kaikki Code Farmer Networkin julkaisemat ohjelmistot, ohjelmamateriaalit tai artikkelit ovat tarkoitettu vain oppimis- ja tutkimustarkoituksiin; Yllä mainittua sisältöä ei saa käyttää kaupallisiin tai laittomiin tarkoituksiin, muuten käyttäjät joutuvat kantamaan kaikki seuraukset. Tämän sivuston tiedot ovat peräisin internetistä, eikä tekijänoikeuskiistat liity tähän sivustoon. Sinun tulee poistaa yllä oleva sisältö kokonaan tietokoneeltasi 24 tunnin kuluessa lataamisesta. Jos pidät ohjelmasta, tue aitoa ohjelmistoa, osta rekisteröityminen ja hanki parempia aitoja palveluita. Jos rikkomuksia ilmenee, ota meihin yhteyttä sähköpostitse.

Mail To:help@itsvse.com