我在javascript中有一个n*n*n数组,我需要在其中执行大量的访问。
我不需要按顺序访问所有元素,但只需要在特定位置访问。我还希望,如果可能的话,不要分配数组单元的所有内存,直到它被使用(否则将直接占用几MB内存)。
我正在寻找最有效的方法来做到这一点。我尝试使用由构建键(x+ '#‘+y+ '#’+z)索引的字典,但它的效率不够高。
你能推荐一些其他有效的方法来实现这一点吗?
发布于 2013-02-27 21:43:34
恐怕没有比字典方法更快的访问对象的方法了,因为这就是Javascript中的一切。要不分配内存,可以使用对象而不是数组:
var x = {};
var key = x + '#' + y + '#' + z;
x[key] = 'some value';
这至少会给你的内存带来担忧,但我不确定这是否真的是一个大问题。(而且,我甚至不确定如果使用数组,它是否会分配内存,因为我不熟悉Javascript中的内存分配)。
发布于 2013-02-27 22:44:51
我认为你的多维数组是非常好的。如果创建稀疏,它不会耗尽所有的内存,并且行为更像一个简单的“字典”对象-你也可以使用嵌套对象。然而,我建议嵌套查找将比在大型字典中更快,因为散列函数变得更简单,键更少。此外,从最里面的维度加载或迭代完整的数组将比从巨大的字典中查询每个单独的项要快得多。
毕竟,如果您实际上没有遇到任何重要的性能问题,请使用您认为更容易写/读/使用的代码。
https://stackoverflow.com/questions/15122016
复制相似问题