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 ...
 
随机推荐
- LESS学习笔记1
			
个人理解:less是一个可以写函数的css
 - Android之canvas详解
			
首先说一下canvas类: Class Overview The Canvas class holds the "draw" calls. To draw something, y ...
 - 【转】Quartus II调用modelsim无缝仿真
			
Quartus II调用modelsim无缝仿真 ★emouse 思·睿博客文章★ 原创文章转载请注明:http://emouse.cnblogs.com 本篇文章为转载,写的不错,最近在学mode ...
 - Ubuntu 下搭建SVN服务器
			
root@iZ25q0jd99eZ:~# sudo apt-get install subversion root@iZ25q0jd99eZ:/etc/subversion# mkdir /svn r ...
 - Shell脚本入门与应用
			
编写第一个shell脚本 如同其他语言一样,通过我们使用任意一种文字编辑器,比如 nedit.kedit.emacs.vi 等来编写我们的 shell 程序.程序必须以下面的行开始(必须方在文件的第一 ...
 - Android中JNI 的一些常用Method说明
			
Android JNI和NDK关系 1.什么JNI Java Native Interface (JNI)标准是java平台的一部分,它允许Java代码和其他语言写的代码进行交互.JNI 是本地编程 ...
 - 微信支付v3发布到iis时的证书问题(转)
			
本文纯粹转载(原地址:微信支付v3发布到iis时的证书问题 ) 一开始报“出现了内部错误” 解决方法是 方法一 var cer = new X509Certificate(certpath, pass ...
 - Git 分布式版本管理
			
Git是分布式版本控制系统,我们常用的版本控制工具还有SVN.这里就得区分下什么是分布式版本控制系统,什么是集中化的版本控制系统. 集中化的版本控制系统 集中化的版本控制系统( Centralized ...
 - Java POI Word 写文档
			
package apache.poi; import java.io.ByteArrayInputStream;import java.io.ByteArrayOutputStream;import ...
 - C  Golden gun的巧克力
			
Time Limit:1000MS Memory Limit:65535K 题型: 编程题 语言: 无限制 描述 众所周知,13级有尊大神Golden gun,人称根叔,简称金枪!众立志进校队的 ...