Swift vs Objective-C:App性能

时间:2015-02-11 11:10:52

标签: ios objective-c performance swift

我正在研究Swift及其与Objective-C的不同之处。从我可以收集的内容来看,当前版本的Swift比Objective-C更快,更快:see here

然而,由于大多数这些测试是通过排序算法等完成的,我想知道当Swift用于开发iOS应用程序时,它是否真的比Objective-C更快。任何人都可以在这方面给我启发,最好是根据自己的经验。

5 个答案:

答案 0 :(得分:37)

Apple声称Swift比Objective-C更快,正如你所说的那样排序算法更快,但对于iOS开发的使用,一个简单的用户不会认识到在Swift中开发的应用程序之间的区别或Objective-C。我在Objective-C中开发了很多应用程序,这些应用程序都在苹果商店中,现在有几个在Swift中使用,到目前为止,如果一个比另一个快得多,用户就无法区分。

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

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

答案 1 :(得分:28)

There is a great blog-post关于Swift性能的提升,尤其是之后的 Swift 1.2版本。

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

除了真实的'表现,我个人的经验是,我在Swift中的开发更容易。我从不喜欢Objective-C中的.h.m文件,因为它停止了编程的流程'。另外我认为语法本身比使用这些括号的objective-c更容易。

所以我认为,如果你从Scratch编写一个新项目,Swift会更容易,更快速,更优雅。 (我的意见)

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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

如果您可以将慢速操作移出主UI队列,那么您编写的大多数代码都不是性能关键。 API调用将花费更多时间,并且不会受用于调用它们的语言的影响。即使在性能至关重要的情况下,需要大量优化的代码量往往很小,您可以切换到更快的语言(例如C),仅用于那些部分。

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

我有一些关于在blog上优化Swift的博文,我在10月份发布了short talk

答案 4 :(得分:-3)

与Objective-C相比,Swift更快;这就是Apple的Swift团队声称的,这当然是真的。但是,事实是您必须计划很多事情才能编写响应式应用程序。以下是一些指示:

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