Požadavky: V poslední době, když se<T> dívám na znalosti jako Span a Memory<T>, mám pocit, že používání takových objektů přináší mnoho výhod, například: přímý přístup k paměti (a velmi bezpečný), snížení zbytečného přidělování paměti (v závislosti na scéně, např. zachycení podřetězců při konverzi řetězců), úprava hodnot v paměti a stále se učí, ne tak hluboké porozumění.
System.Span<T> je nový typ hodnoty v jádru .NET. Podporuje reprezentaci souvislé oblasti libovolné paměti, ať už je tato paměť spojena s řízeným objektem, poskytovaná nativním kódem prostřednictvím interoperace, nebo je součástí zásobníku. Dělá to při zajištění bezpečného přístupu s výkonnostními charakteristikami podobnými poli. Při používání Span zajišťuje bezpečnost paměti a dat s minimálními nebo žádnými režiemi.
Například pokud použijeme Substring k převodu řetězce na typ int, guid, long atd., již nebudeme používat obsah zachyceného řetězce, ale volání Substringu pro vrácení nového řetězce požádá o nový paměťový prostor.
Nejprve je představen nástroj benchmarkingu BenchmarkDotNet, a to následovně:
Testovací kód je následující:
Výsledky jsou následující:
Odkaz:
Přihlášení k hypertextovému odkazu je viditelné.
Přihlášení k hypertextovému odkazu je viditelné.
|