CARingBuffer替代Swift

时间:2016-03-24 12:07:54

标签: ios swift core-audio

在使用以下API的音频应用程序中 C ++ 类CARingBuffer的 Swift 替换可能是好的

CARingBuffer *mBuffer = new CARingBuffer()
mBuffer->Allocate(...)
mBuffer->Store(...)
mBuffer->Fetch(...)
mBuffer->GetTimeBounds(...)

谢谢!

更新:对纯Swift实施感兴趣(没有C / C ++桥接)。

Udpate 2 :允许Swift实施使用低级C API,例如memcpyOSAtomicCompareAndSwapLongBarrier等。

更新3 :让我们假设发送到Whole Module Optimization的链接器问题是暂时的,将在较新版本的swift工具链中解决。

更新4 :在实施CARingBuffer in Swift并运行性能测试(C ++和Swift)后,我得到了一些数据:

2 000 000个周期(2个通道,44100 Hz,每帧512个样本,缓冲容量4096帧)

  • C ++:0.48s
  • 斯威夫特:0.58秒(慢1.208)

20 000 000次循环

  • C ++:4.8s
  • 斯威夫特:6.3s(慢1.313)

200 000 000次循环

  • C ++:47.43s
  • 斯威夫特:58.13秒(慢1.226)

0 个答案:

没有答案