【问题标题】:Slow access to multidimensional array's items缓慢访问多维数组的项目
【发布时间】:2014-07-19 11:47:04
【问题描述】:

我在使用 Swift 时遇到了一个小问题。

我正在将我的旧 C++ 代码移植到它,并且有几个地方我正在使用二维数组。

Swift 代码现在看起来像:

var m_blocksSave:Array<Array<Int>>

var columns = 32
var rows = 32

//fill array with 0
    for column in 0..<columns {
        var columnArray = Array<Int>()
        for row in 0..<rows {
            columnArray.append(0)//default is 0
        }
        m_blocksSave.append(columnArray)

    }

然后我想检查这个数组,例如找到 1。事实上,任何对数组项目的访问都会造成巨大的减速。

例如,这段代码在我的机器上最多可能需要 4 秒(无论环境如何,我都可以将 iOS 与模拟器一起使用或将其作为原生 OS X 应用程序运行):

    for var i=0;i<columns;i++
    {
        for var j=0;j<rows;j++
        {
            let intVariable = m_blocksSave[i][j]//this thing is slow
        }
    }

在这种情况下我能做什么?发生了什么?为什么这么慢?

【问题讨论】:

  • 您为优化设置了哪个编译器选项?
  • 真的需要时间!
  • 我已经尝试了从 -ONone 到 -OFast 的所有选项。
  • 今天尝试再次进行此测试,一切正常!所以这只是beta软件的限制,GM种子现在可以了。

标签: ios arrays multidimensional-array swift


【解决方案1】:

您可以参考:Most efficient way to access multi-dimensional arrays in Swift?。 总之,现在二维数组不太好,需要自己用一维数组构造二维数组。

【讨论】:

    猜你喜欢
    • 2019-10-11
    • 2011-04-28
    • 2021-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-12
    相关资源
    最近更新 更多