我在使用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
}
}
在这种情况下我能做什么?发生了什么?为什么这么慢?
你可以参考:在Swift中访问多维数组的最有效方法?总之,2D数组现在不是很好,你需要用1D数组构建你自己的2D数组。