首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >生命记忆游戏: 3D阵列(世代,x,y)。最大限度地减少内存使用的可能性?

生命记忆游戏: 3D阵列(世代,x,y)。最大限度地减少内存使用的可能性?
EN

Stack Overflow用户
提问于 2014-01-15 01:59:08
回答 2查看 93关注 0票数 1

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

我正在JavaScript中重新创建生命游戏,需要一个3D数组。据我所知,在开始填充数组之前,我必须声明数组的大小。这很不幸,因为我不知道这场比赛会持续多少代。如果我把它调低,游戏可能会突然停止。如果我将其设置为“高”,浏览器可能会因为填满内存而崩溃。这是我声明3D矩阵的代码。

代码语言:javascript
复制
    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();
                }
            }
        }
    }

主要问题:有没有一种更有效的记忆方式来做到这一点?

额外的问题,没有一个正确的答案(抱歉):有多少内存使用量是太多?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-01-15 02:03:20

在开始填充数组之前,为什么必须声明数组的大小?

您始终可以用新项扩展矩阵。也许你可以告诉我们你想用矩阵做什么。

在我看来,对于一些不太复杂的东西来说,过多的内存使用量超过100 MB。但是,也许您更担心数组的大小,这取决于您在其中存储了什么。

票数 0
EN

Stack Overflow用户

发布于 2014-01-15 02:03:42

是的,有一种更节省内存的方法:使用二维数组并动态计算下一代。如果您的用例需要反复跳过很多次,您也可以存储每一代,比如说千代,并使用这些作为起点。如果您还没有使用HashLife这样的高效算法,可能会对此有所帮助。

实际上,大多数事情都是时间/代码复杂性/内存权衡。每个单元格总是以位而不是4+字节的形式存储。

据我所知,在开始填充数组之前,我必须声明数组的大小。

不是在JavaScript。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21127796

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档