缓慢访问多维数组的项目

时间:2014-07-19 11:47:05

标签: ios arrays multidimensional-array swift

我遇到了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
        }
    }

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

1 个答案:

答案 0 :(得分:0)

您可以参考:Most efficient way to access multi-dimensional arrays in Swift?。 总之,2D阵列现在还不是很好,需要用1D阵列构建自己的2D阵列。