Denne artikkelen er en speilartikkel om maskinoversettelse, vennligst klikk her for å hoppe til originalartikkelen.

Utsikt: 22799|Svare: 1

[Kilde] Linq: Bruk aldri Count() > 0 for å avgjøre at mengden er ikke-tom

[Kopier lenke]
Publisert på 12.10.2017 13:25:01 | | | |
Før Linq brukte vi vanligvis følgende metode for å avgjøre om en samling er ikke-tom, altså at en samling inneholder elementer:


Ved å bruke attributtet Length or Count er det ikke noe problem med teksten ovenfor.

Men i Linq-æraen "forente" Enumerable.Count-utvidelsesmetoden egenskapene Length og Count, noe som resulterte i følgende måte å skrive på for å vurdere ikke-nullitet:


Denne skrivingen fungerer fint og fint, men det kan føre til svært alvorlige ytelsesproblemer.

Merk at det er mulig, ikke nødvendigvis, og hvis metoden ovenfor sendes inn som et array<T>, liste eller samling<T>, vil det ikke være noe problem.



Så når skal noe gå galt? La oss se på følgende metoder:


Når du ringer:



Kjørehastigheten vil være ganske langsom, og det tok omtrent 70 sekunder for datamaskinen min å kjøre kildekoden. Count() > 0。


Hvis du analyserer den, vil du finne at avkastningsreturen i på linje 5 i GetNums-koden utfører int. MaxValue, er det nødvendig?

Faktisk, så lenge vi returnerer ett element, kan vi konkludere med at mengden er ikke-tom, og det er ikke nødvendig å returnere alle elementene i det hele tatt.

Så hvordan skal man vurdere? Vi kan bruke metoden Enumerable.Any extension:



Endre SomeAction-metoden som følger:



Ring det igjen, og du vil oppdage at gjennomføringstiden er neglisjerbar.


For å oppsummere vil Count() > 0 uunngåelig få ytelsesproblemer når den møter yeild return.






Foregående:C#-implementering av tre timere
Neste:js-streng til dato og dato pluss-dag
Ansvarsfraskrivelse:
All programvare, programmeringsmateriell eller artikler publisert av Code Farmer Network er kun for lærings- og forskningsformål; Innholdet ovenfor skal ikke brukes til kommersielle eller ulovlige formål, ellers skal brukerne bære alle konsekvenser. Informasjonen på dette nettstedet kommer fra Internett, og opphavsrettstvister har ingenting med dette nettstedet å gjøre. Du må fullstendig slette innholdet ovenfor fra datamaskinen din innen 24 timer etter nedlasting. Hvis du liker programmet, vennligst støtt ekte programvare, kjøp registrering, og få bedre ekte tjenester. Hvis det foreligger noen krenkelse, vennligst kontakt oss på e-post.

Mail To:help@itsvse.com