0

我有两个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)
    }
}

有更快的方法吗?

4

0 回答 0