我正在研究Swift及其与Objective-C的区别。从我所了解的情况来看,当前版本的Swift相当快,甚至比Objective-C更快:点击这里查看。
然而,由于大多数测试都是使用排序算法等进行的,我想知道当它用于iOS应用程序开发时,Swift是否实际上比Objective-C更快。能否有人根据自己的经验给我一些启示。
我正在研究Swift及其与Objective-C的区别。从我所了解的情况来看,当前版本的Swift相当快,甚至比Objective-C更快:点击这里查看。
然而,由于大多数测试都是使用排序算法等进行的,我想知道当它用于iOS应用程序开发时,Swift是否实际上比Objective-C更快。能否有人根据自己的经验给我一些启示。
苹果公司声称Swift比Objective-C更快,正如你所说的,在那些排序算法中它确实更快,但对于iOS开发的使用者而言,一个普通用户不会识别一个用Swift或Objective-C开发的应用程序之间的差异。我用Objective-C开发了很多在Apple Store中的应用程序,现在也用Swift开发了几个应用程序,到目前为止,用户无法区分哪一个比另一个快得多。
Swift不太可能导致比用Objective-C开发的应用程序运行更快的应用程序。虽然这两种语言非常不同,但它们都针对相同的Cocoa和Cocoa Touch API、iOS和OS X,并且都是静态类型的语言,都使用相同的LLVM编译器,因此它们并没有那么不同。由于这两种语言并不完全相同,所以会有性能差异,但不要期望出现显著的差异。
Swift也是苹果开发的,旨在吸引新的程序员,因为它更类似于Ruby和Python等语言,而不是Objective-C。
这里有一篇很不错的博客文章,讲解了Swift 1.2版本发布后性能的改进。
作者进行了多次测试,使用了不同类型的代码,如类似于Objective-C的Swift代码、纯Swift以及Objective-C代码。结果表明,Swift 1.2比以前更快。他还用JSON进行了测试,因此比仅仅算法更加实际。
除了实际的性能改进,我的个人经验是,我在Swift中开发更加轻松。我从来不喜欢Objective-C的.h
和.m
文件,因为它会打断“编程的流程”。此外,我认为其语法比Objective-C [采用这些大括号] 更容易。
因此,如果你要从头开始编写一个新项目,Swift将更加容易、快速和优雅。(我的看法)
在任何语言中都可以编写慢速代码,Swift也不例外。我还没有时间完全评估Swift 1.2 Beta,但即使在大多数情况下,代码可以变得相当快速,但也很容易变得非常慢。特别是访问非最终实例方法非常慢,而调试版本则非常慢(我有几个案例比发布版本慢100倍)。稍微优化最深层嵌套循环的工作通常足以迅速将其接近C性能。
你编写的大部分代码并不那么关键,只要你能将慢速操作移到主UI队列之外。更多的时间将花在API调用上,而这些调用不会受到调用它们的语言的影响。即使在性能至关重要的情况下,需要进行大量优化的代码量往往很小,你可以仅针对这些部分切换到更快的语言(例如C)。
在比较Objective-C时,值得考虑的是我们所说的Objective-C是什么意思。您可以在Objective-C代码中编写C函数,并且它们将产生与C一样快的代码。我会说它们是C,而且要有意义地谈论Objective-C性能,应该是基于Objective-C消息发送和可能是NSArrays而不是原始C数组的代码。如果这是基础,那么Swift(在优化并使用结构体和最终类时)将表现得相当不错。但是,如果与C代码进行比较,目前情况下Swift通常会更慢。
相较于Objective-C,Swift有其自身的优点,例如:Swift更容易处理字符串,Swift元组提供了复合变量,此外,编程人员不需要花费时间注释变量类型信息并冒险犯错;在大多数情况下,编译器可以从变量被设置的值中推断出类型。
Swift比Objective-C快,这是苹果的Swift团队所声称的,而且确实如此。然而,事实是,在编写响应式应用程序之前,您必须计划许多事情。以下是一些要点: