arrays - swift 中的二维数组迭代速度(Beta 4)

标签 arrays swift iteration beta

我一直在与 Swift 的速度问题作斗争,主要是数组。目前正在运行最新的“beta 4”版本。我已将代码分解到 Playground 中以尝试显示问题

我设置了一个二维数组,对其进行迭代,设置每个元素。

import UIKit

func getCurrentMillitime() -> NSTimeInterval {
    let date: NSDate = NSDate()
    return date.timeIntervalSince1970*1000;
}

let startTime = getCurrentMillitime()

let X = 40
let Y = 50
var distanceGrid = [[CGFloat]](count: X, repeatedValue:[CGFloat](count: Y,repeatedValue:CGFloat(0.0)))
for xi in 0..<X {
    for yi in 0..<Y {
        distanceGrid[xi][yi] = 1.1
       //println("x:\(xi) y:\(yi) d:\(distanceGrid[xi][yi])")
    }
}

let endTime = getCurrentMillitime()
let computationTime = endTime - startTime
println("Time to compute \(computationTime) ms")

运行上面的代码,你会得到:

Time to compute 2370.203125 ms

这肯定是不对的!...我是个傻瓜吗?

最佳答案

关于 Swift 性能需要考虑的两件事:

  • 测试期间,一切都悬而未决。

  • Swift 的许多性能技巧都依赖于优化器。特别是当涉及泛型时(每个数组都是泛型 Array<T> ),Swift 在 -O0 处使用更具表现力/调试器友好的实现,但在 -O-Ofast 处将其优化为更高性能的实现。 (请注意,-Ofast 还取消了边界检查和其他安全功能,因此对于生产版本来说这不是一个好主意。)

另外,请注意您当前的示例正在测量使用 init(count:repeatedValue: 创建 2D 数组的时间以及迭代它的时间。如果您只想测量后者,则应在创建数组后设置 startTime

关于arrays - swift 中的二维数组迭代速度(Beta 4),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24958255/

相关文章:

javascript - React - 使用映射函数迭代状态

python - 在迭代列表时修改列表总是错误的吗?为什么?

arrays - Perl:如果值数组相交,则打印 2 个哈希值中的键

arrays - 两个数组的元素相加

ios - 使用 SpriteKit 制作 Logo 动画

ios - 在 iOS10 上,userNotification 没有显示在横幅中,没有错误,仅在 iPhone 锁定时有效

javascript - 将值插入数组会导致 undefined variable ,但可以在函数内工作

javascript - jQuery.parseJSON 无序数组

ios - 从弹出的 UINavigationController 或 UITabBarController 确定 viewWillAppear

java - 按条目的递减乘积生成列表的笛卡尔乘积(条目是正数,列表已排序)