0

JavaScript に *n*n 配列があり、多くのアクセスを実行する必要があります。

すべての要素に順番にアクセスする必要はありませんが、特定の位置にのみアクセスする必要があります。また、可能であれば、使用されるまで配列セルのすべてのメモリを割り当てないようにしたいと考えています(それ以外の場合は、直接数MBのメモリが必要になります)。

そのための最も効率的な方法を探しています。構築されたキー ( x + '#' + y + '#' + z ) によってインデックス付けされた辞書を使用しようとしましたが、明らかに十分に効率的ではありません。

これを達成するための他の効率的な方法を提案できますか?

4

2 に答える 2

1

ディクショナリ メソッドよりも高速にオブジェクトにアクセスする方法はありません。残念ながら、それが Javascript のすべての機能であるためです。メモリを割り当てないようにするには、配列の代わりにオブジェクトを使用できます。

var x = {};
var key = x + '#' + y + '#' + z;
x[key] = 'some value';

これにより、少なくともメモリの問題が発生しますが、それが本当に大きな問題であるかどうかはわかりません. (また、Javascriptでのメモリ割り当てに慣れていないため、配列を使用するとメモリが割り当てられるかどうかもわかりません)。

于 2013-02-27T21:43:34.473 に答える
0

あなたの多次元配列は完全に素晴らしいと思います。スパースに作成された場合、すべてのメモリを消費することはなく、単純な「辞書」オブジェクトのように機能します。ネストされたオブジェクトを使用することもできます。それでも、ハッシュ関数はキーが少なくて簡単になるため、ネストされたルックアップは巨大な辞書よりも高速になることを提案します。また、最も内側の次元から完全な配列をロードまたは反復することは、巨大な辞書から各単一アイテムをクエリするよりも著しく高速になります。

結局のところ、本質的なパフォーマンスの問題が実際に発生しない場合は、書き込み/読み取り/使用が簡単なものを使用してください。

于 2013-02-27T22:44:51.450 に答える