Swift比目标C快多少

  1. 支持动态库。

Swift支持的动态库,它们直接加载到应用程序的内存中,可以优化应用程序的性能。 与应用程序的直接连接允许它们独立于操作系统进行更新。 它有助于使您的解决方案保持最新状态,减小应用程序大小,并加快新内容的加载时间。

Objective-C不支持动态库,这是一个主要缺点。 事实是它们更大,因为外部程序内置在可执行文件中。 动态库较小,因为动态库只有一个副本存储在内存中。

2. 运行时代码编译

目标C使用运行时代码编译,而不是编译时间。 这意味着当Objective-C对象在代码中调用另一个对象时,将涉及额外的间接级别。 通常,这发生得非常快,但是当代码编译发生很多次时,它变得可以测量,而swift需要更少的编译时间。

3. 参考类型与值类型

Swift的String,Dictionary和Array是结构。 这意味着它们是值类型的,并且不支持继承,因此Swift可以静态链接并可以内联调用其方法。 它们也是写时复制的,因此,如果您仅从这些数据结构之一中读取数据,Swift可以通过边界检查将许多访问转换为指针算法。

4. 常量和可选的用法

  • 与C相比,Swift允许和鼓励使用常量的次数更多。 优化器可以假设常量永远不会改变-甚至禁止使用后门技术(例如对常量形成UnsafePointer)-这样它就可以安全地缓存先前获取的值并执行其他优化。
  • 可选选项可确保某些指针永远不会为nil,因此编译器可以省略nil检查。

6. 更多注意事项

  • Swift对象可以彼此调用,而无需执行消息发送,这是Objective-C性能的瓶颈。
  • Objective-C的对象具有神奇的属性,可以对消息进行自省和动态处理。 这是非常强大的功能,但是会增加每条消息的成本。
  • 迅捷对象不需要此。 因此可以更加轻巧。 从理论上讲,没有理由说Swift代码不能跟C ++一样快。
  • 在简单的测试中,将优化器设置为“ 11”,Swift代码似乎具有与C / C ++类似的性能。