问题描述
对于我的 Node.js 应用程序,我需要选择性能最好的结构来表示网格。
我的要求/限制是:
- 要存储的网格本质上是二维的(x,y),并且不是很大(100-300个单元格)
- 网格中的某些单元格不包含任何内容,即,网格将为25%的空间为空
- 我将不得不经常处理网格。我需要做一些繁重的工作 网格算法,例如 flood-fill , A *寻路等
- 这是更改网格并再次应用算法的重复模拟过程
- 我的目标是在有限的时间内进行数百次仿真,因此每一毫秒都很重要
- 我不在乎代码的可读性
- 使用的内存量也是一个小问题
- 无法切换到另一种编程语言
我一直在以下三个选项中进行选择:
var grid = [height][width];
grid[y][x] = {};
var grid = [height * width];
grid[y * height + x] = {};
var y = ~~(index % height);
var x = index - height * y;
var grid = [];
var key = x + ',' + y;
grid[key] = {};
第一个是最舒适的,因为我将大量操作坐标,这意味着x
和y
将一直很方便。可能的缺点-与一维数组相比,我读到保存对象时它可能会慢得多。
秒很好,并且可能非常快。但是我需要将index
转换为x
和y
,反之亦然,这是额外的计算,涉及到索引到坐标转换的模数。我仍然在许多好的资源中看到了这种方法。
第三种方式对我来说是新手,但我已经在一些健壮的代码示例中看到了它,而且我读到从哈希表中检索对象与2D数组相比也更快。
我对合成基准测试不太信任,因此到目前为止,我不希望与几乎空逻辑建立代码竞争。但是,如果我现在选择错误的方式,然后不得不恢复原状,恐怕还有很长的路要走。
我看到过类似的问题,问这些方法的不同对,但是没有一个反映我的要求足够接近。
感谢您考虑使用代码示例。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)