У меня есть ссылка памяти, mBuffers.mData (от AudioUnit bufferList), объявленный в OS X и IOS каркасных заголовки как:Эффективно записывать данные Int16 в память в Swift?
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). Это цикл внутри обратного вызова в реальном времени, поэтому эффективный код для минимизации латентности и потребления батареи имеет важное значение.
Есть ли более быстрый способ?
Существуют ли зависимости между предыдущим расчетным значением и новым расчетным значением? Если нет, мы можем попытаться выполнить этот цикл параллельно с помощью GCD. –