javascript - 游戏内存问题: 3D 数组( 一代,x,y ) 可以最小化内存使用情况?

  显示原文与译文双语对照的内容

编辑:一些有用的回复让我认识到忘记了一个关键的细节。 我也在检查振荡,意味着我必须储存每一代的信息。

我正在用JavaScript重新创建生命游戏,需要 3D array 。 我知道,在开始填充之前,我必须声明一个 array的大小。 this,因为我不知道游戏将持续多少代。 如果我把它设置为低,游戏可能会突然停止。 如果我设置为高,浏览器可能会从内存中崩溃。 这是我声明 3D 矩阵的代码。


 cellMatrix = new Array();

 function declareMatrix() {

 for (var g = 0; g <maxGenerations; g++) {

 cellMatrix[g] = new Array();

 for (var x = 0; x <width; x++) {

 cellMatrix[g][x] = new Array();

 for (var y = 0; y <height; y++) {

 cellMatrix[g][x][y] = new Array();
 }
 }
 }
 }

主要问题:有更有效的记忆方法?

没有单个正确答案( 抱歉)的附加问题: 多少内存使用量太多?

时间: 作者:

为什么要先声明 array的大小,然后才能开始填充它?

你总是可以使用新项目扩展矩阵。 也许你可以告诉我们你想用矩阵做什么。

我认为内存使用太多,对于某些不太复杂的东西来说,超过 MB 。 但也许你更担心 array的大小,这取决于你存储在它里面的东西。

是,有更多的内存有效方法: 使用二维 array 并计算下一代。 如果你的用例需要跳过很多,你也可以存储每一个,比如千分之一的起点。 如果你还没有使用 HashLife,那么一个高效的算法可能会帮助你。

大多数事情都是时间/代码复杂性/内存权衡,实际上。 总是将每个单元格存储为比特,而不是 4字节字节。

我知道,在开始填充之前,我必须声明一个 array的大小。

不在JavaScript中。

作者:
...