Anforderungen: In letzter Zeit habe ich beim Betrachten von<T> Wissen wie Spann und Speicher <T>das Gefühl, dass es viele Vorteile bei der Nutzung solcher Objekte gibt, wie zum Beispiel: direkter Zugriff auf den Speicher (und sehr sicher), Verringerung unnötiger Speicherzuweisung (je nach Szene, z. B. Substring-Interception bei String-Conversion), Änderung von Werten im Speicher und weiterhin Lernen, nicht dieses tiefgehende Verständnis.
System.Span<T> ist ein neuer Werttyp im .NET-Kern. Es unterstützt eine Darstellung eines zusammenhängenden beliebigen Speicherbereichs, unabhängig davon, ob dieser Speicher mit einem verwalteten Objekt verbunden ist, durch nativen Code über Interop bereitgestellt wird oder sich im Stack befindet. Dies geschieht und bietet dennoch sicheren Zugriff mit Leistungsmerkmalen, die denen von Arrays ähneln. Im Einsatz gewährleistet Span Speicher- und Datensicherheit mit wenig bis keinem Overhead.
Wenn wir zum Beispiel Substring verwenden, um einen String in den Typ int, guid, long usw. umzuwandeln, verwenden wir den abgefangenen Inhalt der String nicht mehr, aber das Aufrufen eines Substrings, um einen neuen String zurückzugeben, fordert neuen Speicherplatz an.
Zunächst wird das Benchmarking-Tool Benchmarking Benchmarking eingeführt, wie folgt:
Der Testcode ist wie folgt:
Die Ergebnisse sind wie folgt:
Referenz:
Der Hyperlink-Login ist sichtbar.
Der Hyperlink-Login ist sichtbar.
|