现在我正在优化我的代码,但我真的被卡住了。 我追踪了运行几个命令所需的时间,并得出结论,访问三维数组“花费”最多的时间。
array1是[Struct Data type], array2是[[[UInt8]]]
我用:
for a in 0 ..< 600 {
for b in 0..< 900 {
array1[counter] = Struct(s:array2[var1][var2][var3])
}
}
我用过:
for a in 0 ..< 600 {
for b in 0..< 900 {
array1[counter] = Struct(s:UInt8(123))
}
}
这给我带来了巨大的推动但却毫无用处。因此,我得出结论,访问array2需要大部分时间。 包含第一个样本的循环以0.025秒运行,第二个样本以0.005秒运行。
如何更快地访问三维数组?我试图将它变成一个1 dim数组,这会导致很多麻烦,因为它不明确使用哪个索引。 我使用已经优化的Swift 4也不是很快。 非常感谢你的帮助!
答案 0 :(得分:3)
如果您想将维度a_3d[x][y][z] <-> a_1d[nY*nX*z + nX*y + x]
的3d数组表示为1d数组,请使用此转换:
3x4x5
例如a_3d[1][2][3] corresponds to a_1d[4*3*3+3*2+1] = a_1d[43]
数组:
{{1}}