В C#, как использовать Span для повышения производительности с двоичными данными из базы данных?

#c# #.net-core

Вопрос:

Я храню двоичные данные в базе данных и читаю их, используя SqlDataReader вот так:

 DataAccess.Person person = new(); person.Photo = (byte[])reader["Photo"];  

В какой-то момент данные из объекта доступа к данным копируются в объект передачи данных. Затем бизнес-правила обработают двоичные данные, которые, я думаю, вызовут еще одну копию данных. Таким образом, мои двоичные данные копируются несколько раз.

Как я могу использовать Spanlt;Tgt; или Memorylt;Tgt; уменьшить копирование данных, когда мои данные перемещаются с одного уровня приложения на другой уровень, а затем используются бизнес-правилами?

Комментарии:

1. Массив является ссылочным типом, поэтому у вас не будет нескольких копий данных, если вы их явно не создадите.

2. Прежде чем приступать к какой-либо оптимизации, вы должны установить конкретные цели по производительности и измерить свое текущее состояние . Нет смысла оптимизировать там, где а) вы уже достигаете своих целей, или б) где цель вашей оптимизации не несет ответственности за проблему.