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

标签 javascript multidimensional-array matrix

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

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

最佳答案

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

关于你的问题 - 你可以将二维数组转换为一维数组并通过访问所有单元格

gameMap[y * 10000 + x]

其中 10000 是 map 的“宽度”。因此无需将 map 划分为象限。

关于javascript - 如何优化二维矩阵读取速度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13947524/

相关文章:

javascript - 如何渲染数组的单个元素?

javascript - Uncaught Error : Expected to find a document already present for removed

java - 二维数组的 OutOfBounds 异常

matlab - 从矩阵中提取正值和负值

java - 如何创建邻居的ArrayList来协调无向图中的节点?

r - R 中错误的矩阵求逆结果

javascript - 运行一次查询后按钮禁用

javascript - 使用 CSS 添加一个 div 到 DOM

r - R中的多维数组到表

javascript - 在 PHP 中从二维数组创建非二叉树