我只是比较
Swift和
Objective-C的表现。为此,我正在使用NSDate来衡量所花费的时间,但是我在Swift和Objective-C之间有很大的区别。我刚跑了一个空的循环十万次。这是我的代码,
在Objective-C中,
- NSDate * start = [NSDate date];
- for (int i=0; i<=100000; i++) {
- }
- NSDate * end = [NSDate date];
- double tiMetaken = [end timeIntervalSinceDate:start] * 1000;
tiMetaken是0.24毫秒
在斯威夫特,
- var start = NSDate()
- for i in 0...100000
- {
- }
- var end = NSDate()
- var tiMetaken = end.timeIntervalSinceDate(start) * 1000
TiMetaken在Swift中为74毫秒,与Objective-C相比,这是一个很大的差异。
我在测量中做错了吗?
我不认为这是一个很公平的比较。你只是要求Objective-C执行一个循环,但是你要求Swift生成一个很大的范围(特别是Range< Int>),然后迭代它。在我的计算机上,Swift大约需要0.53秒的时间来遍历一百万的范围,但是只有大约0.012秒才能执行一个循环到一百万,这与Objective-C中程序的0.002秒相比。
我的程序(两个项目都设置为命令行工具)
和Objective-C