Swift - 学用 数组 Array

40 篇文章 0 订阅
17 篇文章 0 订阅

遍历数组方法效率比较

//var hhArr = Set<Int>.init()
//
//for i in 0..<1000000 {
//    hhArr.insert(i)
//}

var hhArr: Array<Int> = [Int].init(repeating: 12, count: 1000000)

//forin 遍历
var stratTime = CACurrentMediaTime()
for num in hhArr {
}
var duration:String = String(format: "%.7f", (CACurrentMediaTime() - stratTime))
print("forin执行时间:        \(duration)")

//Range 遍历 (index,value)
stratTime = CACurrentMediaTime()
for index in 0..<hhArr.count {
}
duration = String(format: "%.7f", (CACurrentMediaTime() - stratTime))
print("Range执行时间:        \(duration) ")

//foreach 遍历 (index,value)
stratTime = CACurrentMediaTime()
hhArr.forEach { (value) in
}
duration = String(format: "%.7f", (CACurrentMediaTime() - stratTime))
print("forEach执行时间:      \(duration)")

//enmerated 遍历 (offset,value)
stratTime = CACurrentMediaTime()
for num in hhArr.enumerated() {
}
duration = String(format: "%.7f", (CACurrentMediaTime() - stratTime))
print("enmerated执行时间:    \(duration)")


//enmerated 赋值遍历 (index,value)
stratTime = CACurrentMediaTime()
for (index,value) in hhArr.enumerated() {
}
duration = String(format: "%.7f", (CACurrentMediaTime() - stratTime))
print("enmerated正执行时间:  \(duration)")

//enmerated 反向遍历 (index,value)
stratTime = CACurrentMediaTime()
for (index,value) in hhArr.enumerated().reversed() {
}
duration = String(format: "%.7f", (CACurrentMediaTime() - stratTime))
print("enmerated倒执行时间:  \(duration)")
stratTime = CACurrentMediaTime()

输出:

forin执行时间:        0.2368286
Range执行时间:        0.4636577 
forEach执行时间:      0.2391857
enmerated执行时间:    0.3148192
enmerated正执行时间:  0.3109440
enmerated倒执行时间:  0.6621849
enmerated执行时间:    0.3156892
enmerated正执行时间:  0.3125509
enmerated倒执行时间:  0.6486633

结论, 速度:
forin > forEach > enmerated正序 > enmerated倒序。
enmerated 遍历 取 (index, value) < 只取value, 但差别不大。
同样数量的Set集合要比数组遍历快的多
swift的遍历要比C语言的遍历慢的多

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值