mor*_*des 8 iphone audio performance objective-c
我在iPhone的音频编程方面取得了一些进展.现在我正在做一些性能调整,试图看看我是否可以从这台小机器中挤出更多.运行鲨鱼,我发现我的cpu功率的很大一部分(16%)被objc_msgSend吃掉了.我知道我可以通过存储指向函数(IMP)的指针而不是使用[object message]表示法调用它来加快速度.但如果我要解决所有这些麻烦,我想知道我是否可以更好地使用C++.
有什么想法吗?
Ste*_*non 13
Objective C对于DSP /音频编程来说绝对够快,因为Objective C是C的超集.您不需要(也不应该)将所有内容都作为消息.在性能至关重要的地方,使用普通的C函数调用(或使用内联汇编,如果有硬件功能可以利用这种方式).如果性能不重要,并且您的应用程序可以从消息间接的功能中受益,请使用方括号.
例如,OS X上的Accelerate框架是一个出色的高性能Objective C库.它只使用标准的C99函数调用,你可以从Objective C代码调用它们而不需要任何包装或间接.
Objective-C 和 DSP 等功能的问题不是速度本身,而是不可避免的瓶颈何时出现的不确定性。
所有语言都有瓶颈,但在 C++ 等静态链接语言中,您可以更好地预测瓶颈在代码中何时何地发生。在 Objective-C 的运行时耦合的情况下,找到合适的对象所花费的时间、发送消息所花费的时间不一定很慢,而是可变且不可预测的。Objective-C 在 UI、数据管理和重用方面的灵活性在时间紧迫的任务中会产生不利影响。
Apple API 中的大多数音频处理都是用 C 或 C++ 完成的,因为需要确定代码执行所需的时间。然而,在同一个应用程序中混合 Objective-C、C 和 C++ 很容易。这使您可以为当前的任务选择最佳语言。
归档时间: |
|
查看次数: |
2775 次 |
最近记录: |