美文网首页
swift性能分析

swift性能分析

作者: 史记_d5da | 来源:发表于2020-03-30 23:00 被阅读0次

    1、swift的基本数据类型string、dictionary等都是struct类型,而oc的NSString、NSDictionary等都继承class。从内存管理方面来分析,struct是分配在栈,class一般都是分配在堆上。大家都知道栈的性能要比堆更好。

    2、swift的数据类型都是在编译阶段就确定了,oc具有动态性,一般的数据类型和函数调用都是在运行时才确定。

    结合oc和swift的demo来分析各自的性能。
    swift的代码

    var arr:[String] = []
    override func viewDidLoad() {
       super.viewDidLoad()
       let startTime = CFAbsoluteTimeGetCurrent()
       let testStr = String("一段测试代码,一万遍的循环")
       for _ in 1...10000 {
           arr.append(testStr)
       }
       let linkTime = (CFAbsoluteTimeGetCurrent() - startTime);
       print("Linked in \(linkTime) ms")
    }
    

    控制台打印

    **Linked in 0.025310993194580078 ms**
    

    oc代码

    self.arr = [[NSMutableArray alloc]init];
    CFAbsoluteTime startTime =CFAbsoluteTimeGetCurrent();
    NSString *testStr = [NSString stringWithFormat:@"%@",@"一段测试代码,一万遍的循环"];
    for (int i = 0; i < 10000; i++) {
        [self.arr addObject:testStr];
    }
    CFAbsoluteTime linkTime = (CFAbsoluteTimeGetCurrent() - startTime);
    NSLog(@"Linked in %f ms", linkTime *1000.0);
    

    控制台打印

    Linked in 0.177026 ms
    

    计算相同的数据量,性能上还是有很大差别的

    相关文章

      网友评论

          本文标题:swift性能分析

          本文链接:https://www.haomeiwen.com/subject/jgzbuhtx.html