C代码运行得更快吗?

Mis*_*ith 9 c iphone performance objective-c

从Objective-C调用C代码是否有任何性能提升?

我读过某个地方,与使用函数调用的其他语言相比,消息传递速度较慢.因此,如果我从Objective-C代码调用C函数,我是否避免了消息传递开销?

在优化性能时,是否建议使用C语言编写最关键的函数和过程而不是使用Objective-C对象?

编辑:
鉴于有关过早优化和代码可读性的警告的数量,我想澄清我没有考虑常规应用程序,但非常具体的应用程序,如:

  • 图像
  • 加密或压缩算法.
  • 数学

通常,函数或过程不需要OO设计,并且打算使用参数多次调用.

and*_*n22 11

您编写的代码非常不可能完全符合消息发送的瓶颈.以对您最有意义的方式编写代码,然后使用Instruments进行分析和优化(如有必要).几乎可以肯定,如果你的代码很慢,那将是由于比消息发送更高级别的问题.

  • 虽然避免过早优化的原则是正确的,但实际产品中存在许多情况,当消息传递是一个重要的开销并且应该处理时.您应该强烈避免在被称为数千次或更多次的紧密循环中传递消息.与方法不同,可以内联一个小函数,有时代表实质性的性能增益(特别是当编译器可以应用二次优化时).你是不正确的,你不应该过早地优化,但这并不意味着需要考虑消息发送是不常见的. (3认同)

sch*_*sch 8

这是将消息传递与调用C函数进行比较的基准.以下是调用斐波那契函数的不同实现大约14亿次的结果.

Message Passing 23.495 seconds
IMP Calling     16.033 seconds
C Function      9.709 seconds
Run Code Online (Sandbox Code Playgroud)

所以是的,调用Objective C方法时会有一些开销.但是,除了在某些情况下,这不会影响您的应用程序的性能.事实上,消息传递仍然比大多数其他操作(如浮点除法)更有效.

此外,大多数应用程序花费大部分时间等待用户输入,下载数据等.