我有一个内存引用 mBuffers.mData(来自 AudioUnit bufferList),在 OS X 和 iOS 框架头文件中声明为:
UnsafeMutablePointer<Void>
将大量 Int16 值写入此指针引用的内存的有效方法是什么?
这个 Swift 源代码的反汇编:
for i in 0..<count {
var x : Int16 = someFastCalculation()
let loByte : Int32 = Int32(x) & 0x00ff
let hiByte : Int32 = (Int32(x) >> 8) & 0x00ff
memset(mBuffers.mData + 2 * i , loByte, 1)
memset(mBuffers.mData + 2 * i + 1, hiByte, 1)
}
显示了许多设置 memset() 函数调用的指令(比我的 someFastCalculation 中的指令多得多)。这是实时音频回调中的一个循环,因此最大限度地减少延迟和电池消耗的高效代码非常重要。
有更快的方法吗?