San*_*osh 3 c# performance marshalling unmanaged-memory
我需要将非托管内存读入托管字节数组.
为此,我有一个对非托管内存的IntPtr引用和一个长度,它表示我感兴趣的非托管内存的大小.
我使用以下代码将其读入托管字节数组.
byte[] pixelDataArray = new byte[pixelDataLength];
for (int i = 0; i < pixelDataLength; i++) {
pixelDataArray[i] = Marshal.ReadByte(pixelData, i);
}
Run Code Online (Sandbox Code Playgroud)
然而,这导致非常差的性能.使用256KB非托管内存调用此方法1000次,需要7秒以上.我认为必须有一种更有效的方法来做到这一点.
我无法使用Marshal.PtrToStructure,因为我不知道需要预先阅读的内存大小.
关于如何改进这个功能的任何想法?
而不是循环尝试复制整个块:
Marshal.Copy(pixelData, pixelDataArray, 0, pixelDataLength);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5905 次 |
| 最近记录: |