#performance #for-loop #swift #increment
#Производительность #для цикла #swift #увеличение
Вопрос:
это обычный пустой цикл с обычным оператором приращения «i «
import Foundation
let start = CFAbsoluteTimeGetCurrent()
for var i = 0; i < 1000000; i {
}
let timeTaken = CFAbsoluteTimeGetCurrent() - start
println(timeTaken) // 0.0229730010032654
но этот цикл с «i = i 1» намного быстрее
import Foundation
let start = CFAbsoluteTimeGetCurrent()
for var i = 0; i < 1000000; i = i 1 {
}
let timeTaken = CFAbsoluteTimeGetCurrent() - start
println(timeTaken) // 0.00384700298309326
второй цикл в 5-6 раз быстрее
я понимаю, что swift все еще находится в бета-версии, и я не сравниваю его с другими языками, но для меня это не имеет смысла
Комментарии:
1. Как насчет предварительного увеличения? Это так же медленно?
2. Звучит интересно, но я жду, когда кто-нибудь воспроизведет результаты перед голосованием.
3. Такое измерение времени довольно нелепо. На вашем компьютере одновременно происходит множество событий. Вы включили оптимизацию? Вы выполняли свои измерения более одного раза?
4. @Ramon, с чего бы это? Этот вопрос не касается улучшения рабочего кода.
5. Не
i = i 1
равноi
, а неi
? Рекомендуется использоватьi
.
Ответ №1:
разве это не проблема оптимизатора? справедливый тестовый мир
var i = 0
for j in 1..1000000 {
i
}
var i = 0
for j in 1..1000000 {
i = i 1
}
Комментарии:
1. я просто хотел намекнуть на некоторые недостающие опции в цикле for, если вы используете
i
, аi = i 1
не в рамках ИНИЦИАЛИЗАЦИИ; УСЛОВИЕ; ИНКРЕМЕНТ / ДЕКРЕМЕНТ Части Lopp, разницы нет