Требования: Недавно, изучая такие знания<T>, как Span и Memory<T>, я вижу множество преимуществ использования таких объектов, таких как: прямой доступ к памяти (и очень безопасный), уменьшение ненужного выделения памяти (в зависимости от сцены, например, перехват строк при преобразовании строк), изменение значений в памяти и всё равно обучение — не слишком глубокое понимание.
System.Span<T> — это новый тип значения в ядре .NET. Он поддерживает представление непрерывной области произвольной памяти, независимо от того, связана ли эта память с управляемым объектом, предоставляемая нативным кодом через интероп, или находится в стеке. Он обеспечивает это при сохранении безопасного доступа с характеристиками, схожими с массивами. В процессе использования Span обеспечивает безопасность памяти и данных с минимальными или отсутствующими накладными расходами.
Например, если мы используем Substring для преобразования строки в тип int, guid, long и т.д., мы больше не будем использовать перехватённое содержимое строки, но вызов Substring для возврата новой строки запросит новое пространство памяти.
Во-первых, вводится инструмент бенчмаркинга BenchmarkDotNet, следующий образом:
Тестовый код следующий:
Результаты следующие:
Ссылка:
Вход по гиперссылке виден.
Вход по гиперссылке виден.
|