Swift 与 Objective-C:应用性能

Swift vs Objective-C: App performance

我正在研究 Swift 及其与 Objective-C 的区别。据我所知,Swift 的当前版本非常快,甚至比 Objective-C:see here 还快。

但是,由于大多数这些测试都是使用排序算法等完成的,我想知道 Swift 在用于开发 [=20= 时是否真的会比 Objective-C 快] 应用。哪位大神能给我讲讲,最好是亲身经历。

There is a great blog-post 关于 Swift 性能的改进,特别是 Swift 1.2 版本之后。

作者 运行 使用不同类型的代码进行了多次测试,例如类 Objc Swift 代码、仅 Swift 和仅 Objective-c 代码。结果是,Swift 1.2 比以前快得多。他 运行 使用 JSON 进行测试,因此它比算法更实用。

除了 'real' 的表现,我个人的经验是,我在 Swift 中的发展要容易得多。我从不喜欢 Objective-C 中的 .h.m 文件,因为它阻止了 'flow of programming'。此外,我认为语法本身比 objective-c [带有这些括号] 更容易。

所以我认为,如果您从头开始编写一个新项目,Swift 会更容易、更快、更优雅。 (我的意见)

Apple 声称

Swift 比 Objective-C 快,正如您所说,它在那些排序算法中更快,但是对于 iOS 开发的使用,一个简单的用户不会识别在 Swift 或 Objective-C 中开发的应用程序之间的区别。我在 Objective-C 开发了很多应用程序,这些应用程序在 apple store 中,现在在 Swift 中有几个应用程序,到目前为止,用户无法区分一个比另一个快得多。

Swift 不太可能导致 运行 比 Objective-C 中开发的应用程序快得多的应用程序。尽管这两种语言完全不同,但它们都针对相同的 Cocoa 和 Cocoa Touch API,iOS 和 OS X a,它们都是静态类型的语言并且都使用相同的 LLVM 编译器,所以它们毕竟没有什么不同。性能会有差异,因为这两种语言毕竟不一样,但不要指望会有显着差异。

Swift 也是由 Apple 开发的,以吸引新的程序员,因为它与 Ruby 和 Python 等语言相似,而不是 Objective-C。

Swift 与 Objective-C 相比有其自身的优势,例如:Swift 更容易处理字符串,swift 元组提供复合变量,此外,编码人员不需要需要花时间用类型信息注释变量并且有犯错误的风险;在大多数情况下,编译器可以根据设置变量的值推断类型。

你可以用任何语言编写慢代码,Swift也不例外。我还没有时间全面评估 Swift 1.2 Beta,但即使在大多数代码可以相当快地制作之前,也很容易让它变得很慢。访问非 final 实例方法尤其非常慢,调试构建速度慢得可怕(我有几个案例比发布构建慢 100 倍)。优化嵌套最深的循环的一些工作通常足以快速使其接近 C 性能。

只要您可以将缓慢的操作移出主 UI 队列,您编写的大部分代码都不是性能关键。 API 通话将花费更多时间,并且不会受到通话语言的影响。即使在性能至关重要的地方,需要大量优化的代码量也往往很小,您可以仅针对这些部分切换到更快的语言(例如 C)。

在比较 Objective-C 时,还值得考虑 Objective-C 的含义。您可以在 Objective-C 代码中编写 C 函数,它们将产生与 C 一样快的代码。我会说它们是 C 并且要有意义地谈论 Objective-C 性能,它应该是基于 Objective-C 消息发送和可能的 NSArrays 而不是原始 C 数组。如果这是基础 Swift(当优化并使用结构和最终 类 时)将会很好。但是,如果您与 C 代码进行比较,通常情况下 Swift 目前会更慢。

10 月份我在 blog and I gave a short talk 上发布了一些关于优化 Swift 的博文。

Swift 比 Objective-C 更快;这就是 Apple 的 Swift 团队所声称的,而且确实如此。然而,事实是您必须计划很多事情才能编写响应式应用程序。这里有一些提示:

  1. 删除未使用的资源
  2. 优化ex图片资源
  3. 缓存
  4. 压缩
  5. 可重用代码
  6. 对象生命周期管理