Swift 和Objective-C 性能对比

很多人会有这样的疑惑 Swift 和Objective-C 性能对比

两者到底那个性能比较好一些呢 ?

我们面对一个新的问题要感觉去提问 苹果公司说Swift 的性比Objective-C 的性能要好

是真的好吗?不见得 我们对待任何一个问题要持有怀疑的态度 这样我们收获的才会更多

我们应该这样考虑问题 Objective-C 较Switf 是偏底层的东西

Swift 是后面出来的高级语言 封装性较高 使用起来比较方便

但是越是封装性高的 高级语言 性能往往会差一些 但是它的开发效率较高

下面找一些数据来说明一下这个问题

Swift包含了很多现代语言特性尤其是从一些脚本语言如Javascript/Ruby中汲取了营养,
此外苹果发布Swift时,使用特别选用的一些例子来宣称Swift性能对于Ojbective C的大幅提升(40~50%),如复杂对象排序,
Apple并未声称Swift APP比Objective-C APP性能优越,通过精心挑选的个例(或许是利用已知的Objective-C语言的缺陷),
却巧妙的留下了整体性能提升的印象,但是开发者实际测试出来的情况却相反。
开发者Keith第一时间给出了自己的测试结果,实际数据显示,Swift在简单循环、递增、赋值、数组扩展、字符串拼接上性能远不如Objective C。
可能的一个解释是Swift使用类classes,总在执行ARC(Auto 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语言发展状况,随时学习。

相关文章

软件简介:蓝湖辅助工具,减少移动端开发中控件属性的复制和粘...
现实生活中,我们听到的声音都是时间连续的,我们称为这种信...
前言最近在B站上看到一个漂亮的仙女姐姐跳舞视频,循环看了亿...
【Android App】实战项目之仿抖音的短视频分享App(附源码和...
前言这一篇博客应该是我花时间最多的一次了,从2022年1月底至...
因为我既对接过session、cookie,也对接过JWT,今年因为工作...