Požiadavky: V poslednej dobe, keď sa pozerám na znalosti<T> ako Span a Memory<T>, mám pocit, že používanie takýchto objektov prináša mnoho výhod, napríklad: priamy prístup k pamäti (a veľmi bezpečné), zníženie zbytočného prideľovania pamäte (v závislosti od scény, napr. zachytávanie podreťazcov pri konverzii reťazcov), úprava hodnôt v pamäti a stále učenie, nie hĺbkové pochopenie.
System.Span<T> je nový typ hodnoty v jadre .NET. Podporuje reprezentáciu súvislej oblasti ľubovoľnej pamäte, či už je táto pamäť priradená k spravovanému objektu, poskytovaná natívnym kódom cez interoperáciu, alebo je v zásobníku. Robí to tak, pričom stále poskytuje bezpečný prístup, s výkonnostnými charakteristikami podobnými poľom. Pri používaní Span zabezpečuje bezpečnosť pamäte a dát s minimálnymi alebo žiadnymi režijnými nákladmi.
Napríklad, ak použijeme Substring na konverziu reťazca na typ int, guid, long a pod., už nebudeme používať obsah zachyteného reťazca, ale zavolanie Substringu na vrátenie nového reťazca vyžiada nový pamäťový priestor.
Najprv je predstavený nástroj na benchmarkovanie BenchmarkDotNet, nasledovne:
Testovací kód je nasledovný:
Výsledky sú nasledovné:
Referencia:
Prihlásenie na hypertextový odkaz je viditeľné.
Prihlásenie na hypertextový odkaz je viditeľné.
|