А вот
Array.Copy. Мы можем соревноваться с ним в виде поэлементного копирования массива или, даже, сделать буффер на стеке через stackalloc и пытаться перемещать через него.Увы, не поможет.
Array.Copy будет быстрее за счёт, например, memmove. Там есть ещё пара ухищрений, но я рекомендую посмотреть их лично, перейдя к исходникам.По вопросам реализации в своё время был интересный тред на github. Там такая масса подробностей, что мозг может задымиться.
Для нас это всё должно значить примерно следующее: по возможности нужно использовать
Array.Copy (пусть даже это в виде stream.ReadAsync(buffer), а не писать велосипеды в виде побайтного копирования потока.
