集团成员单位
400-0365-370
首页 / 新闻中心 / 知识百科
知识百科

Swift与Objective C对比:选择更快的开发语言

发布日期:2017-03-25  浏览次数:101

与已经有30年历史iOS APP开发语言Objective-C相比,Swift 1.0可能被认为是一种相对较新的编程语言。另一方面,尽管事实上它远远不如其前身那样成熟,但是却拥有大量的开发者粉丝。

开发人员就Swift分享了许多意见,分享他们的经验来决定哪种语言会更好,最好的办法是检查哪种语言更快。让我们来了解Swift和Objective-C之间的区别。

一、要比较的主要因素

为了选出赢家,我们需要定义比较所需的基本问题。基于LLVM框架编译器,两者都配有一个单一的iOS SDK。因此,有些程序员觉得很难决定,哪个是最好的选择。两种语言在Cocoa框架中的工作方式相同。

比较两种语言的唯一方法是检查其数据结构。你可以选择由Swift提供的原生解决方案和来自Objective-C的Foundation框架,这些框架将有可能比较性能水平。

二、测试环境

我们提供使用支持iPhone 5的iOS 8.3的测试获得的结果。与Swift相比,Objective-C似乎至少要快10倍。这是由于NSArray实现,这证明比Array-Read更快。

你也觉得这样的结果很震惊,不是吗? 但是,似乎在默认框架中运行测试,这显然是错误的,包括XCode调试配置。

Swift如此受影响的原因是与Objective-C中实现的动态性相比,它具有静态检查类型。

Swift的主要特点是你可以提前见证所有的方法,但你无法在运行中添加它们。此外,它的类不能在编译之前或之后创建。同时,你几乎无法对Objective-C进行有效的优化,与静态语言相比,动态语言的运行速度要慢得多。

l  一旦完成优化,你将看到更少令人不安的结果;

l  与NSArray相比,更新,读取和添加操作在Array中的执行时间更少;

l  Swift明显比Objective-C快;

l  由于可在“删除索引”框中观察到异常,Objective-C会将数据删除速度比Swift快10倍。

三、XCTest实际上是一个很好的评估性能方法?

当然不是!一方面,你很可能会看到你期望和需要的结果。另一方面,你一定会遇到一些不明确的障碍和问题,最关键的障碍是无法检查算法复杂度。

还有评估的准确性不高,所以你不太可能得到一个精确的评估结果,这是由于与测试一起启动的一些其它操作。有没有其他更有效的方法进行测试?

四、测量性能的有效方法

很明显,由于缺乏准确性和灵活性,XCTest在测量性能方面几乎不是最好的选择。我们建议你全部排除此测试。

你可以选择一种更有效的方法,让你在衡量绩效时能够从更准确性和灵活性中受益。我们说一个预先初始化的数据结构,具有可预测的元素数量。你可以创建一个具有固定数量的初始状态的新结构,并再次运行该操作。

结果如下:

l  当添加第一个元素时,Swift快4倍;

l  当涉及到填充数组Objective-C似乎快两倍;

l  当从Array中删除元素时,Objective-C无法执行相同的效率;

l  一般来说,Swift似乎是4-6倍快;

l  两种语言都具有线性复杂性;

l  Swift提供了更加清晰的复杂性,而Objective-C最终提供了不间断的功能;

l  Swift有时要求内存分配才能添加一些新的元素。在操作期间可以定期观察时间消耗峰值但是,函数2x可以增加Dictionary的大小。

所有这些因素可能因操作而异,通常,Objective-C更快。同时,我们有足够的结果,以便提出一系列重要的结论,让你决定,哪种语言更快,为什么。

五、Swift VS Objective-C的结论

经过一系列实验和操作,我们可以肯定地说,如果与NSArray相比,Array的速度至少要快2倍。不要忘记增加字典的大小,以增加你事先确定的最大数量的元素。在两个数据结构中使用的算法已被证明是相当有效的,尽管它们需要一些时间来执行操作。

Objective-C似乎在Dictionary和Set中处理插入操作时更为有效。想象一下,你需要处理大量不同的元素。Swift的数组看起来更为可取,因为除了搜索之外,所有操作的不同类型的数据都被证明是更有效的。集合也是一个很好的解决方案。

六、那么,哪种语言更好?

尽管所有这些比较,我们仍然没有讨论编码过程。它还包含几个重要因素,你可以评估Swift和Objective-C编程语言的质量。传统上这些因素包括:语法定义、高效的编译器、安全性和错误的数量。

比较两种语言后,你将看到以下结果。

Swift优势:

这种语言提供了许多伟大的事情,包括管理安全记忆的工具,简单的继承规则,强大的打字等等;

与Objective-C相比,你会发现Swift更容易阅读、语言更简洁,除了许多过滤器之外,你还可以利用特殊模块的优点消除类前缀;

你可以自由创建具有高度灵活性的新的轻量级类,它们将仅包含你需要的必要元素。一切都很简单明了。虽然Swift不是最快的语言,但它肯定比Objective-C快。

Swift缺点:

l  有些错误会让你感到困惑和误导;

l  IDE支持相当差;

l  XCode(本机IDE)充满了错误。

人们几乎不会认为Swift自首次亮相以来已经演变,无论你是否需要完成一些中小型商业项目,这种语言一定是最好的选择。另一方面,Objective-C仍然提供更快的开发过程。

文章来源:http://www.kingwins.com.cn/content-636.html

推荐新闻
行业资讯 / INDUSTRY CONSULTING官方动态 / COMPANY DYNAMIC知识百科 / knowledge媒体报道 / media