Objective-C、C++和swift 的运行效率比较
自己做iOS开发,以后慢慢都要转swift,前段时间看到网上的一个帖子,说swift的运行效率奇低,觉得自己有必要验证一下。
我用了一个最简单的加法运算,从0加到10000000,看三种语言的时耗。
swift 2.2:
import Foundation let start = CFAbsoluteTimeGetCurrent()
var sum = 0
for i in 0...10000000{
sum += i;
}
print("swift")
print(sum)
print(String(CFAbsoluteTimeGetCurrent() - start) + "s")
运行结果:
Objective-C 2.0:
#import <Foundation/Foundation.h> int main(int argc, const char * argv[]) {
@autoreleasepool {
NSInteger sum = ;
CFTimeInterval start = CFAbsoluteTimeGetCurrent();
for (int i = ; i <= ; i++) {
sum += i;
}
CFTimeInterval end = CFAbsoluteTimeGetCurrent();
CFTimeInterval dur = end - start;
printf("Objective-C sum=%ld\n",sum);
printf("dur:%f s\n",dur); }
return ;
}
运行结果:
C++ 11:
int main(int argc, const char * argv[]) {
chrono::system_clock::time_point startTime = chrono::system_clock::now();
long sum = ;
for (int i = ; i < ; i++) {
sum += i;
}
chrono::system_clock::time_point endTime = chrono::system_clock::now();
cout << "C++ sum: " << sum << endl;
cout << "duration: " <<(endTime - startTime).count()*1.0/CLOCKS_PER_SEC << "s" << endl;
return ;
}
运行结果:
运行结果可以发现:C++的效率比Objective-C 和 swift 的效率要高,C++ 只比 Objective-C 稍高一点,且二者的精度都比swift的低,要那么高精度有什么用,不知道苹果的用意。CFAbsoluteTimeGetCurrent,函数的内部设置导致的把,是double类型的。C++运行速度是swift运行的两倍,运行结果会和硬件也有关系,如CPU主频等。当然swift还在持续改进,swifter们不要太头大。持续关注吧。
Objective-C、C++和swift 的运行效率比较的更多相关文章
- 从Objective-C到Swift 单例模式
在Objective-C中经常会用到单例模式.最常见的就是: [UIApplication sharedApplication].delegate 这里的sharedApplication就是一个返回 ...
- Objective的宏到swift中该怎么办?
ReadMehtml, body {overflow-x: initial !important;}.CodeMirror { height: auto; } .CodeMirror-scroll { ...
- 5 数组 Swift/Object-C ——《Swift3.0从入门到出家》
Swift中数组是一种数据结构,用来存放多个形同类型的数据结构,数据在数组内的存放是有序的,存进来的数据个读出来的顺序相同 Object-C 中数组能够存放任意类型的数据类型为[AnyObject] ...
- 一个资深iOS开发者对于React Native的看法
一个资深iOS开发者对于React Native的看法 当我第一次尝试ReactNative的时候,我觉得这只是网页开发者涉足原生移动应用领域的歪门邪道. 我认为一个js开发者可以使用javasc ...
- [转] 一个资深iOS开发者对于React Native的看法
当我第一次尝试ReactNative的时候,我觉得这只是网页开发者涉足原生移动应用领域的歪门邪道. 我认为一个js开发者可以使用javascript来构建iPhone应用确实是一件很酷的事情,但是我很 ...
- 大神眼中的React Native--备用
当我第一次尝试ReactNative的时候,我觉得这只是网页开发者涉足原生移动应用领域的歪门邪道. 我认为一个js开发者可以使用javascript来构建iPhone应用确实是一件很酷的事情,但是我很 ...
- Android Realm数据库使用指南
Android Realm数据库使用指南 Realm数据库, 目前有Java, Objective‑C, React Native, Swift, Xamarin的几种实现, 是一套用来取代SQLit ...
- iOS完全自学手册——[一]Ready?No!
1.前言 今天开始我会不定期写一些iOS自学的相关文章.毕竟,自己是自学开始,知道自学有哪些坑,知道自学对于开发欠缺什么,此外,加上现在的实际开发经验,希望能给自学的iOS开发者一些建议. 2.Rea ...
- Automake
Automake是用来根据Makefile.am生成Makefile.in的工具 标准Makefile目标 'make all' Build programs, libraries, document ...
随机推荐
- 使用Memory Analyzer tool(MAT)分析内存泄漏(二)
转载自:http://www.blogjava.net/rosen/archive/2010/06/13/323522.html 前言的前言 写blog就是好,在大前提下可以想说什么写什么,不像投稿那 ...
- Android实现圆形圆角图片
本文主要使用两种方法实现图形圆角图片 自定View加上使用Xfermode实现 Shader实现 自定View加上使用Xfermode实现 /** * 根据原图和变长绘制圆形图片 * * @param ...
- C++实现大数据乘法
结构体定义与封装 struct bigdatacom { private : ]; ]; public : void init(const char *str1,const char *str2) { ...
- Ubuntu安装dos2unix工具
Ubuntu下默认没有安装dos2unix工具,而且也没有一个叫这个名字的工具(我在solaris里用过dos2unix,不知道为啥Ubuntu没有).但是有一个替代工具——tofrodos , 下面 ...
- hdu 4091 线性规划
分析转自:http://blog.csdn.net/dongdongzhang_/article/details/7955136 题意 : 背包能装体积为N, 有两种宝石, 数量无限, 不能切割. ...
- SQL SERVER 与ACCESS、EXCEL的数据转换
--Excel导入到SQL的一个新思路: /*比如Excel有两列,A列和B列需要导入到SQL表中,反正我已经有几年不用DTS之类的工具了. 在Excel中的新的一列中,直接写公式 =CONCATEN ...
- nodeAPI--FS
fs是唯一一个同时提供同步和异步API的模块: 读取文件夹文件名,数组形式返回: var fs = require('fs'); //async fs.readdir('./',function(er ...
- F Takio与Blue的人生赢家之战
Time Limit:1000MS Memory Limit:65535K 题型: 编程题 语言: 无限制 描述 在那个风起云涌的SCAU ACM里,有两位人生赢家,他们分别是大洲Takio神和 ...
- 暴力/set Codeforces Round #291 (Div. 2) C. Watto and Mechanism
题目传送门 /* set的二分查找 如果数据规模小的话可以用O(n^2)的暴力想法 否则就只好一个一个的换(a, b, c),在set容器找相匹配的 */ #include <cstdio> ...
- LightOJ1201 A Perfect Murder(树形DP)
一道经典的树型DP入门题.dp[u][0/1]表示u点不选或选时以u为根的子树最多能选择的点数. 题目给的有向有环图可以看作森林,注意不是树,因为题目没有说图是连通的! #include<cst ...