Acest articol este un articol oglindă al traducerii automate, vă rugăm să faceți clic aici pentru a sări la articolul original.

Vedere: 22799|Răspunde: 1

[Sursă] Linq: Nu folosiți niciodată Count() > 0 pentru a determina că mulțimea nu este vidă

[Copiază linkul]
Postat pe 12.10.2017 13:25:01 | | | |
Înainte de Linq, de obicei foloseam următoarea metodă pentru a determina dacă o colecție este nevidă, adică o colecție conține elemente:


Folosind atributele Length sau Count, nu există nicio problemă cu scrierea de mai sus.

Dar în era Linq, metoda de extensie Enumerable.Count "unifica" proprietățile Length și Count, rezultând următorul mod de scriere pentru a judeca non-nulitatea:


Această scriere este bună și funcționează bine, dar poate cauza probleme foarte serioase de performanță.

Rețineți că este posibil, nu neapărat, iar dacă metoda de mai sus este introdusă ca un Array<T>, List sau Collection<T>, nu va exista nicio problemă.



Deci, când va merge ceva prost? Să analizăm următoarele metode:


Când sunt chemați:



Viteza de execuție va fi destul de lentă și a durat cam 70 de secunde ca calculatorul meu să execute sursa. Count() > 0。


Dacă îl analizezi, vei vedea că randamentul i din linia 5 al codului GetNums execută int. MaxValue, este necesar?

De fapt, atâta timp cât returnăm un element, putem concluziona că mulțimea este nevidă și nu este nevoie să returnăm toate elementele.

Deci, cum să judeci? Putem folosi metoda de extensie Enumerable.Any:



Modificați metoda SomeAction astfel:



Sună din nou și vei vedea că timpul de execuție este neglijabil.


În concluzie, Count() > 0 va avea inevitabil probleme de performanță când va întâlni revenirea de tip yeild.






Precedent:Implementarea în C# a trei cronometre
Următor:JS string to date și date plus day
Disclaimer:
Tot software-ul, materialele de programare sau articolele publicate de Code Farmer Network sunt destinate exclusiv scopurilor de învățare și cercetare; Conținutul de mai sus nu va fi folosit în scopuri comerciale sau ilegale, altfel utilizatorii vor suporta toate consecințele. Informațiile de pe acest site provin de pe Internet, iar disputele privind drepturile de autor nu au legătură cu acest site. Trebuie să ștergi complet conținutul de mai sus de pe calculatorul tău în termen de 24 de ore de la descărcare. Dacă îți place programul, te rugăm să susții software-ul autentic, să cumperi înregistrarea și să primești servicii autentice mai bune. Dacă există vreo încălcare, vă rugăm să ne contactați prin e-mail.

Mail To:help@itsvse.com