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

Άποψη: 24478|Απάντηση: 2

[Πηγή] Βελτιστοποίηση απόδοσης C#: Το Lazy αρχικοποιεί το lazy με <T>καθυστέρηση

[Αντιγραφή συνδέσμου]
Δημοσιεύτηκε στις 17/6/2019 4:17:17 μ.μ. | | | |
1. Επισκόπηση

Χρειάζεται πολλή κατανάλωση για τη δημιουργία ενός αντικειμένου και αυτό το αντικείμενο μπορεί να μην χρησιμοποιηθεί κατά τη διάρκεια της εκτέλεσης, οπότε για να αποφευχθεί η δημιουργία του αντικειμένου κάθε φορά, μπαίνει στο παιχνίδι η τεμπέλης αρχικοποίηση (ονομάζεται επίσης τεμπέλης δημιουργία).

Η καθυστερημένη προετοιμασία εμφανίζεται στο . NET 4.0, το οποίο χρησιμοποιείται κυρίως για τη βελτίωση της απόδοσης, την αποφυγή σπατάλης υπολογισμών και τη μείωση των απαιτήσεων μνήμης προγράμματος. Μπορεί επίσης να ονομαστεί φόρτωση κατ' απαίτηση.

2. Βασική γραμματική


3. Εφαρμογή με παραδείγματα

Ξεκινήστε δημιουργώντας μια τάξη μαθητών με τον ακόλουθο κώδικα:

Δημιουργήστε ένα πρόγραμμα κονσόλας με τον ακόλουθο κώδικα:

Αφού όρισα το σημείο διακοπής για τον εντοπισμό σφαλμάτων, διαπίστωσα ότι μετά το νέο, η τιμή του IsValueCreated του μαθητή ήταν ψευδής και η τιμή της τιμής ήταν μηδενική



Στη συνέχεια, όταν καλείτε την ιδιότητα Όνομα, η τιμή του μαθητή IsValueCreated είναι αληθής και η τιμή της τιμής δεν είναι πλέον μηδενική



Αποτέλεσμα εκτέλεσης:



Μπορεί να φανεί ότι το Student αρχικοποιείται μόνο όταν εξάγεται το χαρακτηριστικό Name, δηλαδή αρχικοποιείται όταν χρησιμοποιείται για πρώτη φορά, έτσι ώστε να επιτευχθεί ο σκοπός της μείωσης της κατανάλωσης.

Αυτό το παράδειγμα είναι απλό και ο <T>πιο βασικός τρόπος χρήσης του Lazy. Μπορούμε επίσης να χρησιμοποιήσουμε<T> τη συνάρτηση υπερφόρτωσης του Lazy, Lazy<T> (Func<T>), για να περάσουμε έναν εκπρόσωπο με μια τιμή επιστροφής για να ορίσουμε την τιμή ιδιότητας του αντικειμένου lazy initialization.

Αποτέλεσμα εκτέλεσης:



Note:<T> Η προετοιμασία του τεμπέλικου αντικειμένου είναι ασφαλής για νήματα από προεπιλογή και σε περιβάλλον πολλαπλών νημάτων, το πρώτο νήμα που θα αποκτήσει πρόσβαση<T> στην ιδιότητα Value του τεμπέλικου αντικειμένου θα αρχικοποιήσει το αντικείμενο Lazy<T> και τα επόμενα νήματα πρόσβασης θα χρησιμοποιήσουν τα δεδομένα που αρχικοποιήθηκαν για πρώτη φορά.

4. Σενάρια εφαρμογής

Υπάρχει ένα αντικείμενο που έχει πολλά γενικά έξοδα για δημιουργία και το πρόγραμμα ενδέχεται να μην το χρησιμοποιήσει. Για παράδειγμα, ας υποθέσουμε ότι το πρόγραμμά σας φορτώνει πολλές παρουσίες αντικειμένων κατά την εκκίνηση, αλλά μόνο μερικές παρουσίες πρέπει να εκτελεστούν αμέσως. Μπορείτε να βελτιώσετε την απόδοση εκκίνησης του προγράμματός σας καθυστερώντας την προετοιμασία των περιττών αντικειμένων μέχρι να δημιουργηθούν τα απαραίτητα αντικείμενα.






Προηγούμενος:Αποκαλύψτε μερικές αλήθειες για τη συνέντευξη
Επόμενος:Εγχειρίδιο χρήσης για το εργαλείο δοκιμής JCSHELL
Δημοσιεύτηκε στις 18/6/2019 6:18:32 μ.μ. |
Λοιπόν, το κατάλαβα
 Σπιτονοικοκύρης| Δημοσιεύτηκε στις 4/7/2023 7:19:55 μ.μ. |
Πώς το Lazy in C# διατηρεί τα νήματα ασφαλή
https://www.itsvse.com/thread-10621-1-1.html
Αποκήρυξη:
Όλο το λογισμικό, το υλικό προγραμματισμού ή τα άρθρα που δημοσιεύονται από το Code Farmer Network προορίζονται μόνο για μαθησιακούς και ερευνητικούς σκοπούς. Το παραπάνω περιεχόμενο δεν θα χρησιμοποιηθεί για εμπορικούς ή παράνομους σκοπούς, άλλως οι χρήστες θα υποστούν όλες τις συνέπειες. Οι πληροφορίες σε αυτόν τον ιστότοπο προέρχονται από το Διαδίκτυο και οι διαφορές πνευματικών δικαιωμάτων δεν έχουν καμία σχέση με αυτόν τον ιστότοπο. Πρέπει να διαγράψετε εντελώς το παραπάνω περιεχόμενο από τον υπολογιστή σας εντός 24 ωρών από τη λήψη. Εάν σας αρέσει το πρόγραμμα, υποστηρίξτε γνήσιο λογισμικό, αγοράστε εγγραφή και λάβετε καλύτερες γνήσιες υπηρεσίες. Εάν υπάρχει οποιαδήποτε παραβίαση, επικοινωνήστε μαζί μας μέσω email.

Mail To:help@itsvse.com