Kapitel 24. Span<T> und Speicher<T>
Diese Arbeit wurde mithilfe von KI übersetzt. Wir freuen uns über dein Feedback und deine Kommentare: translation-feedback@oreilly.com
Die Strukturen Span<T>
und Memory<T>
fungieren als Low-Level-Fassade für ein Array, einen String oder einen zusammenhängenden Block von verwaltetem oder nicht verwaltetem Speicher. Ihr Hauptzweck ist es, bei bestimmten Arten der Mikro-Optimierung zu helfen - insbesondere beim Schreiben von Code mit geringer Speicherbelegung, der die Zuweisung von verwaltetem Speicher minimiert (und damit die Belastung des Garbage Collectors verringert), ohne dass du deinen Code für verschiedene Arten von Eingaben duplizieren musst. Außerdem ermöglichen sie das Slicing - das Arbeitenmit einem Teil eines Arrays, Strings oder Speicherblocks, ohne eine Kopie zu erstellen.
Span<T>
und Memory<T>
sind besonders nützlich in Performance-Hotspots, wie der ASP.NET Core-Verarbeitungspipeline oder einem JSON-Parser, der eine Objektdatenbank bedient.
Hinweis
Solltest du in einer API auf diese Typen stoßen und ihre potenziellen Leistungsvorteile nicht brauchen oder interessieren:
Gib ein Array ein, wenn du eine Methode aufrufst, die eine
Span<T>
,ReadOnlySpan<T>
,Memory<T>
oderReadOnlyMemory<T>
erwartet, alsoT[]
. (Das funktioniert dank der impliziten Umwandlungsoperatoren.)Rufe die
ToArray
Methode auf, um einen Span/Speicher in ein Array umzuwandeln. WennT
char
ist, wandeltToString
den Bereich/Speicher in einen String um.
Konkret tut ...
Get C# 8.0 in einer Kurzfassung now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.