博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Swift,Objective-C语言性能对照測试
阅读量:6707 次
发布时间:2019-06-25

本文共 1538 字,大约阅读时间需要 5 分钟。

原文发表于

Swift包括了非常多现代语言特性尤其是从一些脚本语言如Javascript/Ruby中汲取了营养。

此外苹果公布Swift时,使用特别选用的一些样例来宣称Swift性能对于Ojbective C的大幅提升(40~50%),如复杂对象排序,

Apple并未声称Swift APPObjective-C APP性能优越,通过精心挑选的个例(也许是利用已知的Objective-C语言的缺陷),

却巧妙的留下了总体性能提升的印象。可是开发人员实际測试出来的情况却相反。

开发人员Keith第一时间给出了自己的測试结果,实际数据显示。Swift在简单循环、递增、赋值、数组扩展、字符串拼接上性能远不如Objective C

可能的一个解释是Swift使用类classes,总在运行ARCAuto Referrence Count),而Objective C则很多其它使用C风格的数据类型。

详细測试方法、代码和数据引用例如以下:

循环(Loop a million times)

Swift:  0.0036s
Objective-C:  .0021s (1.7x faster)
循环里没有不论什么其它操作。实际上Swift在这里表现不错。由于Objective-C在这个測试用例下就好比一个简单的C语言測试。注意这里的循环方式是x=x+1
自增(Increment)
Swift:  0.024s
Objective-C:  0.0023s (10.4x faster)
奇怪的是Swift ++操作有严重的性能问题,比x=x+1慢6倍。
赋值(Assign)
Swift:  0.024s
Objective-C:  0.0022s (10.9x faster)
这仅仅是一个简单语句 x = y.
大概Swift使用了ARC,保留和释放一百万次显然带来了性能伤害。
加入字符串到数组(Append native string to native array)
Swift:  6.49s
Objective-C:  0.046s (141.1x faster)
Swift代码使用了字符串数组(Array of String).  Objective-C中则是把一个NSString加到一个NSMutableArray中,没有启用优化和其它改造。

而在Objective-C中使用CFMutableArrayRef还会更快,由于非常多情况下,你不须要去保留那个字符串。

加入整数到数组(Append native integer to native array)
Swift:  6.51s
Objective-C:  0.023s (283x faster)
Swift代码使用了整型数组Array of Int.  Objective-C使用了NSNumber和NSMutableArray
拼接字符串(Concatenate two strings)
Swift:  3.47s
Objective-C:  0.27s (21x faster)
Swift内部循环代码:
    theString3 = theString + theString2
Objective-C内部循环代码:
    theString3 = [theString stringByAppendingString:theString2];

兼听则明,Swift还是新生儿。须要接受开发人员的考验。

一个明智的策略也许是对于现有的项目,保持使用Objective C。而对于新项目,尝试性使用Swift,

并让开发团队跟进Swift语言发展状况,随时学习。

很多其它Swift实时资讯可techbrood一下。

by

转载地址:http://vhflo.baihongyu.com/

你可能感兴趣的文章
HTML DOM 定义了访问和操作 HTML 文档的标准方法。
查看>>
Python练习【利用线程池爬取电影网站信息】
查看>>
web前端技术课程内容详解之语义化标签的理解
查看>>
linux下配置NFS服务
查看>>
基于源码编译安装Mariadb实现多实例
查看>>
资本寒冬时代云视频协作价值突显
查看>>
怎样把WORD表格转换成EXCEL
查看>>
必读的Python入门书籍,你都看过吗?(内有福利)
查看>>
网易云课堂资源合集百度云分享
查看>>
哪些设计技巧让你的UI设计更加出彩?
查看>>
【非凡程序员】 OC第九节课 (KVC的运算买粽子的例子 sum,avg,min)
查看>>
String StringBuffer StringBuilder的比较
查看>>
Awesomplete – 零依赖的简单自动完成插件
查看>>
Java邮箱验证
查看>>
Web服务器压力测试工具http_load、webbench、ab、Siege使用教程
查看>>
cordova的环境变量
查看>>
xadmin出现‘Apps aren't loaded yet’错误的解决方法
查看>>
liunx中(mysql数据库的使用)
查看>>
基于Adobe LCDS产品的数据访问解决方案Part5(完结)
查看>>
DaemonSet 典型应用场景 - 每天5分钟玩转 Docker 容器技术(129)
查看>>