当前位置: 首页 > 知识库问答 >
问题:

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

唐珂
2023-03-14

我正在做一个2D游戏。我把游戏地图保存在一个名为gameMap的js对象{}上。我的问题是读取矩阵上的一个项目需要太长时间。对于冲突检测,我通常必须检查地图矩阵的10或20个项目,大约需要1ms,屏幕上有10个字符冲突检测成为应用程序的瓶颈,每帧应该持续16ms中的10ms。此外,当地图变得太大时,按比例放大。

假设地图有1000 x 1000个项目。现在,如果我想检查什么是在位置(-100,200)我检查gameMap['-100'][200]。我的想法是把地图分成象限,将100 x 100个项目分组。所以要检查(-100,200),我将测试gameMap[quentrantName][-100][200]。这意味着,虽然游戏地图的大小大致相同,但它可以处理更少的项目,而且读取速度可能会以更小的比例增加。有人知道这会不会让阅读更快吗?我还能做些什么来提高阅读速度?

共有1个答案

冯良才
2023-03-14

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

至于你的问题-你可以将2d数组转换成一维数组,并通过

gameMap[y * 10000 + x]

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

 类似资料:
  • 问题内容: 我试图创建此代码以输入m x n矩阵。我打算输入,但是代码产生了。当我输入其他m×n矩阵时,也会发生相同的情况,代码会产生行数相同的m×n矩阵。 也许您可以帮助我找到我的代码有什么问题。 问题答案: 问题出在初始化步骤上。 这段代码实际上使您的每一行都引用相同的对象。如果任何列中的任何项目发生更改-其他所有列都将发生变化: 您可以在嵌套循环中初始化矩阵,如下所示: 或者,通过使用列表理

  • 表示为一个 4x4 matrix. 在3D计算机图形学中,4x4矩阵最常用的用法是作为一个变换矩阵Transformation Matrix。 有关WebGL中使用的变换矩阵的介绍,请参阅本教程this tutorial。 这使得表示三维空间中的一个点的向量Vector3通过乘以矩阵来进行转换,如平移、旋转、剪切、缩放、反射、正交或透视投影等。这就是把矩阵应用到向量上。 任何3D物体Object3

  • 一个表示3X3矩阵matrix.的类。 代码示例 const m = new Matrix3(); 注意行优先列优先的顺序。 set()方法参数采用行优先row-major, 而它们在内部是用列优先column-major顺序存储在数组当中。 这意味着 m.set( 11, 12, 13, 21, 22, 23, 31, 32, 33 );元素数组elements将存储

  • 我需要以正确的二维数组格式打印此内容。哎呀,这是错误的。需要从方法打印。我的输出似乎是一个无限循环。

  • 问题内容: 我有一个遗留数据库,我正在尝试将其重新设计成21世纪。现有的数据结构之一涉及一个特定的类,该类包含一个二维值矩阵。如果要从数据库中对该类进行逆向工程,则最终会得到一系列属性,例如: 等等。由于这是一个6x6的矩阵,因此有很多这样的列。 我一直在寻找更好的方法,但是我不确定我在那儿。我想做的是这样的: 但这失败了: 我想不仅要尝试解决错误,还应该四处询问并尝试找到解决此映射挑战的正确 方

  • 问题内容: 如何以矩阵框格式打印出简单的int [] [],就像我们在其中手写矩阵的格式那样。简单的循环运行显然无效。如果有帮助,我正在尝试在linux ssh终端中编译此代码。 问题答案: 产生: