【发布时间】:2021-07-05 08:01:09
【问题描述】:
为什么 for-in 比在 swift 调试模式下慢? 如果您认为,是的,它是在 no optimization 中运行的。
⬇️下面的代码,时间是for-in和while的比较,没有优化
49999995000000 for-in -- 时间 = 3.3352
4999999950000000 而 -- 时间 = 0.3613
⬇️但是,如果使用速度优化
49999995000000 for-in -- 时间 = 0.0037
49999995000000 而 -- 时间 = 0.0035
我想知道“为什么 for-in 比没有优化时慢?为什么 for-in 和 while 在优化中那么快?”
import Foundation
func processTime(_ title: String, blockFunction: () -> ()) {
print()
let startTime = CFAbsoluteTimeGetCurrent()
blockFunction()
let processTime = CFAbsoluteTimeGetCurrent() - startTime
print(title, " -- time = \(String(format : "%.4f",processTime))")
}
processTime("for-in") {
var sum = 0
for i in 0..<10000000 {
sum += i
}
print(sum)
}
processTime("while") {
var sum = 0
var i = 0
while i<10000000 {
sum += i
i += 1
}
print(sum)
}
【问题讨论】: