OS XおよびiOSフレームワークヘッダーで次のように宣言されたメモリ参照mBuffers.mData(AudioUnit bufferListから)があります。
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 よりもはるかに多くの指示)。これはリアルタイム オーディオ コールバック内のループであるため、レイテンシとバッテリー消費を最小限に抑える効率的なコードが重要です。
もっと速い方法はありますか?