gpt4 book ai didi

javascript - 生命游戏内存问题 : 3D Array (generations, x, y)。可以最小化内存使用吗?

转载 作者:行者123 更新时间:2023-11-28 01:39:14 25 4
gpt4 key购买 nike

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

我正在用 JavaScript 重新创建生命游戏,并且需要一个 3D 数组。据我了解,我必须先声明数组的大小,然后才能开始填充它。这很不幸,因为我不知道这款游戏会持续多少代。如果我将其设置为低,游戏可能会突然停止。如果我将其设置为高,浏览器可能会因内存填满而崩溃。这是我声明 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();
}
}
}
}

主要问题:是否有更节省内存的方法?

没有单一正确答案的奖励问题(抱歉):多少内存使用量过多?

最佳答案

是的,有一种更节省内存的方法:使用二维数组并动态计算下一代。如果您的用例需要多次来回跳跃,您也可以存储每一(例如,千代)并将其用作起点。像HashLife这样的高效算法如果您尚未使用,可能会对此有所帮助。

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

As I understand, I have to declare the size of an array before I can start filling it.

JavaScript 中没有。

关于javascript - 生命游戏内存问题 : 3D Array (generations, x, y)。可以最小化内存使用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21127796/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com