απαιτήσεις: Πρόσφατα,<T> εξετάζοντας γνώσεις όπως το Span και <T>η Memory, πιστεύω ότι υπάρχουν πολλά πλεονεκτήματα στη χρήση τέτοιων αντικειμένων, όπως: άμεση πρόσβαση στη μνήμη (και πολύ ασφαλής), μείωση της περιττής εκχώρησης μνήμης (ανάλογα με τη σκηνή, π.χ. υποσυμβολοσειρά υποκλοπή μετατροπής συμβολοσειράς), τροποποίηση τιμών στη μνήμη και ακόμα μάθηση, όχι αυτή η εις βάθος κατανόηση.
Το System.Span<T> είναι ένας νέος τύπος τιμής στον πυρήνα .NET. Υποστηρίζει μια αναπαράσταση μιας συνεχόμενης περιοχής αυθαίρετης μνήμης, είτε αυτή η μνήμη σχετίζεται με ένα διαχειριζόμενο αντικείμενο, που παρέχεται από εγγενή κώδικα μέσω διαλειτουργικότητας, είτε βρίσκεται στη στοίβα. Αυτό το κάνει ενώ εξακολουθεί να παρέχει ασφαλή πρόσβαση, με χαρακτηριστικά απόδοσης παρόμοια με τους πίνακες. Κατά τη χρήση, το Span διασφαλίζει την ασφάλεια της μνήμης και των δεδομένων με ελάχιστα έως καθόλου γενικά έξοδα.
Για παράδειγμα, εάν χρησιμοποιήσουμε το Substring για να μετατρέψουμε μια συμβολοσειρά σε τύπο int, guid, long κ.λπ., δεν θα χρησιμοποιούμε πλέον το περιεχόμενο συμβολοσειράς που έχει υποκλαπεί, αλλά η κλήση του Substring για την επιστροφή μιας νέας συμβολοσειράς θα ζητήσει νέο χώρο στη μνήμη.
Αρχικά, εισάγεται το εργαλείο συγκριτικής αξιολόγησης BenchmarkDotNet, ως εξής:
Ο κωδικός δοκιμής έχει ως εξής:
Τα αποτελέσματα έχουν ως εξής:
Αναφορά:
Η σύνδεση με υπερσύνδεσμο είναι ορατή.
Η σύνδεση με υπερσύνδεσμο είναι ορατή.
|