我需要将非托管内存读入托管字节数组。将非托管内存拷贝到托管字节数组
为此,我有一个IntPtr对非托管内存的引用和一个表示我感兴趣的非托管内存大小的长度。
我使用以下代码将其读入托管字节数组中。
byte[] pixelDataArray = new byte[pixelDataLength];
for (int i = 0; i < pixelDataLength; i++) {
pixelDataArray[i] = Marshal.ReadByte(pixelData, i);
}
但是,这会导致性能很差。使用256KB非托管内存调用此方法1000次需要7秒以上。我认为必须有一个更有效的方式来做到这一点。
我无法使用Marshal.PtrToStructure,因为我不知道需要预先读取的内存大小。
有关如何改进此功能的性能的任何想法?
cool!谢谢。现在只需要380毫秒。 ! – Santhosh
@Santhosh:这并不奇怪。收集数据并不便宜。 –