我有两个UnsafeMutableBufferPointer<UInt32>
s 的代码,需要尽可能快地选择性地从一个缓冲区复制到另一个缓冲区。有一些逻辑可以决定是否复制特定索引/地址处的元素,所以不幸的是我不能memcpy()
全部复制。
在 Swift 中进行每个元素缓冲区复制的最快方法是什么?
为了简单起见,我在下面的示例中删除了每个元素的逻辑。
这很慢(56 毫秒):
for i in 0..<size {
if ... {
dest[i] = source[i]
}
}
这要快得多(18ms),但我想更快:
var srcPtr = source.baseAddress
var dstPtr = dest.baseAddress
for i in 0..<size {
if ... {
srcPtr.pointee = dstPtr.pointee
srcPtr = srcPtr.advance(by: 1)
dstPtr = dstPtr.advance(by: 1)
}
}
有更快的方法吗?