enumeratedも含めての処理速度についての記事が見当たらなかったので、実験を兼ねての投稿。
確認に使用するコード
let array: [Int] = Array(0...10000)
// for
var start = Date()
for i in 0 ..< array.count {
print(i)
}
var elapsed = Date().timeIntervalSince(start)
print("for : \(elapsed)")
// for in
start = Date()
for i in array {
print(i)
}
elapsed = Date().timeIntervalSince(start)
print("for in : \(elapsed)")
// forEach
start = Date()
array.forEach {
print($0)
}
elapsed = Date().timeIntervalSince(start)
print("forEach : \(elapsed)")
// enumerateObjectsUsingBlock
start = Date()
for (_, value) in array.enumerated() {
print(value)
}
elapsed = Date().timeIntervalSince(start)
print("enumerated : \(elapsed)")
結果はコンソールログで確認。
ログ1回目
for : 0.056269049644470215
for in : 0.04717898368835449
forEach : 0.04207801818847656
enumerated : 0.038896918296813965
ログ2回目
for : 0.04687905311584473
for in : 0.03984999656677246
forEach : 0.03262805938720703
enumerated : 0.03680300712585449
ログ3回目
for : 0.07473194599151611
for in : 0.041075944900512695
forEach : 0.04214298725128174
enumerated : 0.040978074073791504
結果
for以外はそこまで処理速度に違いはないと感じたので、好きなものを使用して大丈夫そうという所感。