Всем привет.
Разбираюсь с эффективным произвольным доступом к файлу из-под .Net.
Идея сводится к тому, чтобы отобразить файл в память, а затем работать с ним как со Span<T>, где T — некоторый struct тип.
Смысл идеи — в том, чтобы избежать какой-либо "упаковки/распаковки" или копирований данных.
Бегло погуглил, нашёл несколько проблем без опубликованных решений, и понял, что там не вполне понимаю, как это всё сделать корректно. Как гарантировать, что время жизни Span<T> не превысит время жизни View?
Как работать с файлами длиннее 2GB?
По идее, должен быть какой-то способ работать с View как с Memory<T>, но я пока что не вьехал, как именно это сделать.
Продолжаю читать всякие
https://github.com/dotnet/runtime/issues/37227
https://github.com/dotnet/runtime/issues/24805
и прочее. Если кто-то уже разобрался — ткните носом, куда читать.