Мне нужно прочитать неуправляемую память в массив управляемых байтов.
Для этого у меня есть ссылка IntPtr на неуправляемую память и длина, которая представляет размер неуправляемой памяти, которая мне интересна.
Я использую следующий код, чтобы прочитать его в массив управляемых байтов.
byte[] pixelDataArray = new byte[pixelDataLength];
for (int i = 0; i < pixelDataLength; i++) {
pixelDataArray[i] = Marshal.ReadByte(pixelData, i);
}
Однако это приводит к очень низкой производительности. Вызов этого метода 1000 раз с 256 КБ неуправляемой памяти занимает более 7 секунд. Я думаю, что должен быть более эффективный способ сделать это.
Я не мог использовать Marshal.PtrToStructure, потому что я не знал бы размер памяти, которую нужно читать заранее.
Есть идеи, как можно улучшить производительность этой функции?