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

与已经有30年历史语言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中的执行时间更少;

lSwift明显比Objective-C快;

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

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

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

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

四、测量性能的有效方法

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

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

结果如下:

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

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

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

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

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

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

lSwift有时要求内存分配才能添加一些新的元素。在操作期间可以定期观察时间消耗峰值但是,函数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有些错误会让你感到困惑和误导;

lIDE支持相当差;

lXCode(本机IDE)充满了错误。

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

文章来源:www.kms.kingwins.com.cn/content-624.html返回搜狐,查看更多

责任编辑:

swift编程语言和c,Swift与Objective C对比:选择更快的开发语言相关推荐

  1. 编程语言和shell编程的基础内容以及grep、egrep命令及相应的正则表达式和用法...

    bash的特性之多命令执行的逻辑关系: 1.命令替换 COMMAND1 $(COMMAND2) 2.管道 COMMAND1 | COMMAND2 | COMMAND3 ... 3.顺序执行结构 COM ...

  2. 氩焊机器人编程_焊接机器人编程的这些小技巧你知道吗带你更快入手

    焊接机器人编程的一些小技巧能帮你更快入手 焊接机器人最终加工对象就是工件与焊嘴之间的坐标的设定及使用. 焊接机器人的编程,实际应用中是一个熟练生巧的过程,并不能生搬硬套,得完全了解其工作任务. ■工件 ...

  3. Hadoop系列之三:函数式编程语言和MapReduce

    1.MapReduce和大数据问题 海量数据并行处理的核心思想无非是将一个较大的问题进行"分割包围.逐个歼灭".然而其难点和关键点在于如何将一个大的问题分分割成多个可以分别在不同的 ...

  4. 【翻译】C#编程语言和JAVA编程语言的比较(下)

    原文地址:http://www.25hoursaday.com/CsharpVsJava.html 6.集合 许多有名的编程语言都会包含一个集合框架,框架一般由各种用于保存数据的数据结构和配套的操作对 ...

  5. st编程语言和c语言一样不,STL,ST,SCL等PLC高级编程语言介绍

    比如, Axis_Enable 和 AXIS_ENABLE 这两个变量,在ST语言中是没任何区别的,但在C语言中,可是完全不一样的. 提到工业4.0,提到工业自动化,西门子是一个绕不开的坎!!总之,它 ...

  6. c语言和gtk实现的游戏,Ubuntu下用glade和GTK+开发C语言界面程序(一)

    前言:对于大学中计算机系的每年暑假的课设有太多想说的,能从中学到非常多东西,当然不排除打酱油的,这些能够掠过哦,凡事都打酱油.人生也是打酱油的吧. 2333. 对于大三曾经的课设一般的要求都是用C写的 ...

  7. 易语言和python混合编程_Python脚本可以嵌入易语言程序吗 |

    易语言和python比哪个更好更容易 虽然我很支产,但我不说,易语言一无是处,它甚至不能称为一言,顶多算个IDE.python是一门脚本语言,功能还不错,但目前还不能编写手机软件.编程中出现乱码是非常 ...

  8. Swift学习笔记笔记(一)Swift编程步骤数据类型

    一.实验目的: 掌握Swift编程方法. 掌握Swift数据类型. 二.实验原理: playground的界面与使用方法. 常量与变量的定义方法. 3.常量与变量的类型声明方法. 三.实验步骤及内容: ...

  9. Swift是花拳绣腿吗?——谈谈开发语言与程序员的职业发展

    为什么80%的码农都做不了架构师?>>>    作者简介: 任旻,北京工业大学硕士, 2005年加入微软中国有限公司,2009年加入腾讯,现任高级工程师,曾负责开发"QQ概 ...

  10. 【绝对干货】Swift是花拳绣腿吗?从Swift谈开发语言与程序员的职业发展

    Swift是一种新的编程语言,用于编写 iOS 和 OS X 应用.Swift 结合了 C 和 Objective-C 的优点并且不受C兼容性的限制.Swift 采用安全的编程模式并添加了很多新特性, ...

最新文章

  1. eeglab中文教程系列(2)-绘制脑电头皮图
  2. linux服务器后台运行程序
  3. Croc Champ 2013 - Round 2 (Div. 2 Edition) 贪心+ 搜索+剪枝 + 数学
  4. [python]---从java到python(01)---基础与入门上手
  5. log加时间 securecrt_SecureCRT配置自动记录日志
  6. ASP.NET几种安全验证方法(一)
  7. Java利用jenkins做项目的自动化部署
  8. C++语言类和对象介绍和示例
  9. Netty工作笔记0082---TCP粘包拆包实例演示
  10. 策略人员平常的工作都有哪一些?
  11. Linux内核多线程(四)
  12. matlab实验报告实验四,matlab实验报告(精品小实验).docx
  13. c语言递归算法简单例子加讲解,递归算法经典例子C语言实现递归算法
  14. 游戏开发入行大师攻略
  15. Chrome扩展框架-Vue项目(用vue配合webpack实现浏览器扩展,包含热更新,无需重复加载浏览器插件)
  16. oracle迁移达梦7手顺及注意事项
  17. 美创科技入选第九届CNCERT网络安全应急服务支撑单位
  18. CWRU数据集-美国西储大学轴承数据
  19. idea突然打不开了
  20. Skylin CityBuilder 6.6.1 提示授权过期解决(License Manager中显示未过期)

热门文章

  1. 超级全的一篇前端性能优化清单
  2. 月子中心管理系统方案/软件/案列/小程序/网站
  3. mysql 嵌套查询优化
  4. python 直方图匹配_python库skimage 绘制直方图;绘制累计直方图;实现直方图匹配(histogram matching)...
  5. linux中tar命令怎么用,linux tar命令使用详解
  6. Android CheckBoxPreference设置默认值会触发持久化以及其内部实现逻辑
  7. 视频转rtmp流及搭建视频流服务器
  8. Mysql-多表查询
  9. Access入门之基本操作和认识
  10. java access_Java 连接Access数据库的两种方式