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