swift性能分析

2020-03-30  本文已影响0人  史记_d5da

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

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

上一篇 下一篇

猜你喜欢

热点阅读