zoukankan      html  css  js  c++  java
  • 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:

     1 #import <Foundation/Foundation.h>
     2 
     3 int main(int argc, const char * argv[]) {
     4     @autoreleasepool {
     5         NSInteger sum = 0;
     6         CFTimeInterval start = CFAbsoluteTimeGetCurrent();
     7         for (int i = 0; i <= 10000000; i++) {
     8             sum += i;
     9         }
    10         CFTimeInterval end = CFAbsoluteTimeGetCurrent();
    11         CFTimeInterval dur = end - start;
    12         printf("Objective-C sum=%ld
    ",sum);
    13         printf("dur:%f s
    ",dur);
    14         
    15     }
    16     return 0;
    17 }

    运行结果:

    C++ 11:

     1 int main(int argc, const char * argv[]) {
     2     chrono::system_clock::time_point startTime = chrono::system_clock::now();
     3     long sum = 0;
     4     for (int i = 0; i < 10000000; i++) {
     5         sum += i;
     6     }
     7     chrono::system_clock::time_point endTime = chrono::system_clock::now();
     8     cout << "C++ sum: " << sum << endl;
     9     cout << "duration: " <<(endTime - startTime).count()*1.0/CLOCKS_PER_SEC << "s" << endl;
    10     return 0;
    11 }

    运行结果:

     运行结果可以发现:C++的效率比Objective-C 和 swift 的效率要高,C++ 只比 Objective-C 稍高一点,且二者的精度都比swift的低,要那么高精度有什么用,不知道苹果的用意。CFAbsoluteTimeGetCurrent,函数的内部设置导致的把,是double类型的。C++运行速度是swift运行的两倍,运行结果会和硬件也有关系,如CPU主频等。当然swift还在持续改进,swifter们不要太头大。持续关注吧。

  • 相关阅读:
    java生成4个不同的随机数
    前端学习(三十二)正则(笔记)
    前端学习(三十一)canvas(笔记)
    前端学习(三十)es6的一些问题(笔记)
    前端学习(二十九)nodejs(笔记)
    前端学习(二十八)es6&ajax(笔记)
    前端学习(二十七)存储&es6(笔记)
    前端学习(二十七)自动构造工具交互(笔记)
    前端学习(二十六)移动端s(笔记)
    前端学习(二十四)一些总结(笔记)
  • 原文地址:https://www.cnblogs.com/wjw-blog/p/5710561.html
Copyright © 2011-2022 走看看