Αυτό το άρθρο είναι ένα άρθρο καθρέφτη της αυτόματης μετάφρασης, κάντε κλικ εδώ για να μεταβείτε στο αρχικό άρθρο.

Άποψη: 3028|Απάντηση: 0

[Πηγή] .NET/C# συλλογή Any() ή Count() που είναι πιο γρήγορη

[Αντιγραφή συνδέσμου]
Δημοσιεύτηκε στις 28/6/2023 7:34:31 μ.μ. | | | |
Απαιτήσεις: Πρόσφατα, οι συνάδελφοί μου στην ομάδα του έργου άλλαξαν το data count() > 0 σε Any() για να κρίνουν εάν υπάρχουν δεδομένα στη συλλογή (όχι IQueryble βάση δεδομένων ερωτημάτων) και στη συνέχεια ρώτησαν γιατί άλλαξε (βελτιστοποιήθηκε), αλλά δεν υπήρχε απάντηση.

Χρησιμοποιήστε σημεία αναφοράς για να συγκρίνετε ποιο από τα παρακάτω Any() και Count() είναι πιο γρήγορο.

Ας ξεκινήσουμε με το συμπέρασμα (στο .NET Framwork):Count > Any() > Count()Στο .NET 6, οι επιδόσεις Count() και Any() δεν διαφέρουν πολύ, αλλά εξακολουθούν ναΤο Any() συνιστάται για τη συλλογή εάν υπάρχουν δεδομένα

Ο κωδικός δοκιμής έχει ως εξής:


.NET Framework 4.8.1Τα δεδομένα αναφοράς έχουν ως εξής:



.ΝΕΤ 6Τα δεδομένα αναφοράς έχουν ως εξής:



Δεν το είπατε αυτό στην απόδοση .NET Framwork Any() > Count(); Γιατί το Count() είναι πιο γρήγορο από το List; Ο λόγος είναι ότι η υποκείμενη μέθοδος Count() του List καλεί το πεδίο Count, όπως φαίνεται στο παρακάτω σχήμα:




(Τέλος)





Προηγούμενος:Παράμετρος μεθόδου .NET/C# NULL null
Επόμενος:ASP.NET τη διαφορά μεταξύ ThreadStatic, CallContext και HttpContext
Αποκήρυξη:
Όλο το λογισμικό, το υλικό προγραμματισμού ή τα άρθρα που δημοσιεύονται από το Code Farmer Network προορίζονται μόνο για μαθησιακούς και ερευνητικούς σκοπούς. Το παραπάνω περιεχόμενο δεν θα χρησιμοποιηθεί για εμπορικούς ή παράνομους σκοπούς, άλλως οι χρήστες θα υποστούν όλες τις συνέπειες. Οι πληροφορίες σε αυτόν τον ιστότοπο προέρχονται από το Διαδίκτυο και οι διαφορές πνευματικών δικαιωμάτων δεν έχουν καμία σχέση με αυτόν τον ιστότοπο. Πρέπει να διαγράψετε εντελώς το παραπάνω περιεχόμενο από τον υπολογιστή σας εντός 24 ωρών από τη λήψη. Εάν σας αρέσει το πρόγραμμα, υποστηρίξτε γνήσιο λογισμικό, αγοράστε εγγραφή και λάβετε καλύτερες γνήσιες υπηρεσίες. Εάν υπάρχει οποιαδήποτε παραβίαση, επικοινωνήστε μαζί μας μέσω email.

Mail To:help@itsvse.com