如何优化二维矩阵读取速度?

时间:2012-12-19 07:33:23

标签: javascript multidimensional-array matrix

我正在开发2D游戏。我将游戏地图保存在名为gameMap的js对象{}上。我的问题是读取矩阵上的项目需要太长时间。对于碰撞检测,我通常需要检查10或20项地图矩阵,大约需要1毫秒,屏幕上有10个字符的碰撞检测成为应用程序的瓶颈,每帧16毫秒应该持续10毫秒。当地图变得太大时,也会扩大规模。

假设地图有1000 x 1000项。现在,如果我想检查位置(-100,200)的位置,我会检查gameMap['-100'][200]。我的想法是将地图划分为可分组100 x 100项的象限。所以要检查(-100,200)我会测试gameMap[quadrantName][-100][200]。这意味着虽然gameMap的大小大致相同,但是它可以使用更少的项目,并且读取速度可能会以更小的比例扩展。有谁知道这是否会使阅读更快?我还能做些什么来提高阅读速度?

1 个答案:

答案 0 :(得分:0)

首先,10000x10000字节数组将消耗100MB!你真的需要这么大的阵列吗?也许你最好只存储所有元素的坐标......

关于您的问题 - 您可以将二维数组转换为 1d数组并通过

访问所有单元格
gameMap[y * 10000 + x]

其中10000是地图的“宽度”。因此,没有必要将地图划分为象限。