这真的是一个关于效率的问题,我想......
我有一个设备可以在一个数组中提供(图像)数据,然后传递给第三方库,如下所示:
Private Sub NewData(TheData() as ushort)
LibraryFunction(TheData)
End Sub
这很好用,除了设备有效运行之外它还使用了一个环形缓冲区,为此要求图像数据阵列是' n'乘以图像数据的长度,其中' n'是环形缓冲区的深度。这很好,因为当我从设备接收数据时,我也会收到图像帧的索引。
我想写的是:
Private Const ImageDataLength = somenumber
Private Sub NewData(TheData() as ushort, bufferIndex as long)
LibraryFunction(TheData(bufferIndex * ImageDataLength))
End Sub
但是LibraryFunction只接受一个数组(ushort),所以为了完成这项工作,我必须做以下事情:
Private Const ImageDataLength = somenumber
Private Sub NewData(TheData() as ushort, bufferIndex as long)
Dim tmp(ImageDataLength) As ushort
Array.Copy(TheData, (bufferIndex * ImageDataLength, tmp, 0, ImageDataLength)
LibraryFunction(tmp)
End Sub
再次,工作正常但是有明显的额外数据副本正在进行中。鉴于每个图像数据块实际上是15MB并且我试图保持帧速率,我很想失去array.copy
关于如何使其尽可能高效的任何想法?
由于