Изисквания: Напоследък, разглеждайки знания<T> като Span и Memory<T>, смятам, че има много предимства при използването на такива обекти, като: директен достъп до паметта (и много сигурен), намаляване на ненужното разпределение на паметта (в зависимост от сцената, например Substring interception при конверсия на низове), промяна на стойности в паметта и все пак учене, което не е дълбоко разбиране.
System.Span<T> е нов тип стойност в .NET ядрото. Той поддържа представяне на непрекъснат регион с произволна памет, независимо дали тази памет е свързана с управляван обект, предоставена от нативен код чрез интероп, или е в стека. Той го прави, като същевременно осигурява сигурен достъп, с характеристики на производителност, подобни на масивите. При употреба Span гарантира сигурност на паметта и данните с малко или никакви допълнителни разходи.
Например, ако използваме Substring, за да конвертираме низ в тип int, guid, long и т.н., вече няма да използваме прихванатото съдържание на низ, но извикването на Substring за връщане на нов низ ще поиска ново пространство в паметта.
Първо, въвежда се инструментът за бенчмаркинг BenchmarkDotNet, както следва:
Тестовият код е следният:
Резултатите са следните:
Препратка:
Входът към хиперлинк е видим.
Входът към хиперлинк е видим.
|