【问题标题】:for loop: why is i++ slower than i = i + 1 in swiftfor 循环:为什么 i++ 比 swift 中的 i = i + 1 慢
【发布时间】:2014-08-09 19:17:04
【问题描述】:

这是一个普通的空循环,带有普通的增量运算符“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 仍处于测试阶段,我不会将它与其他语言进行比较,但这对我来说毫无意义

【问题讨论】:

  • 预增量呢?这么慢吗?
  • 听起来很有趣,但我正在等待有人在投票之前复制结果。
  • 像这样测量时间是相当荒谬的。很多事情同时在你的电脑上进行。你开启优化了吗?您是否进行了多次测量?
  • @Ramon,为什么会这样?这个问题与改进工作代码无关。
  • i = i + 1 不等于++i 而不是i++?推荐使用++i

标签: performance for-loop swift increment


【解决方案1】:

这不是优化器问题吗?一个公平的测试世界是

var i = 0
for j in 1..1000000 {
i++
}

var i = 0
for j in 1..1000000 {
i = i + 1
}

【讨论】:

  • 我只是想在 for 循环中提示一些缺少的优化,如果你在初始化中使用 i++i = i + 1;健康)状况; INCREMENT/DECREMENT 部分 Lopp 没有区别
猜你喜欢
  • 2012-08-25
  • 2017-05-17
  • 1970-01-01
  • 2011-06-14
  • 1970-01-01
  • 2016-10-16
  • 1970-01-01
  • 2016-03-18
相关资源
最近更新 更多