ゼロを使用して大きなJavaScript配列を初期化するために、さまざまなメソッドをテストしています。これまでのところ、push(0)を使用した単純なforループは、他のアプローチよりもはるかに優れているようです(http://jsperf.com/initialise-array-with-zerosを参照)が、これの有効性については疑問があります。テスト。
実際には、このような大きな配列を1回だけ作成してキャッシュするため、後で大きな初期化された配列が必要になったときに、単純にスライスすることができます。したがって、最も重要な評価は、多くの試行の平均ではなく、このコードが最初に実行されるのにかかる時間であると思います。
誰かが同意しませんか?または、1ラウンドだけのタイミングをテストする方法/場所を誰かが知っていますか?
編集:非常に多くのゼロを含む配列を割り当てる理由に関するいくつかの誤解に応えて、2つのことを明確にしたいと思います。
- スパース性はありません。複数の大きな配列を作成し、それらを計算に使用する必要があります。これらのコピーはフロートで埋められ、フロートが正確にゼロになる可能性はごくわずかです。
- すべての計算がアレイ上で順次実行されるわけではありません。プロセスで配列を生成する関数は、参照によって渡される配列の値を上書きする場合に比べて非効率的だと思います(例:gl-matrix.jsを参照)。
したがって、私の解決策は、1つの大きなゼロで埋められた配列を一度作成し、新しい配列が必要になるたびにslice()を取得し、それを操作する関数を参照してそのコピーを渡すことです。スライスは、どのブラウザでも超高速です。
さて、なぜ私がこれをやりたいのかという懸念はまだあるかもしれませんが、私が本当に興味を持っているのは、最初の実行でさまざまな初期化方法のパフォーマンスを評価できるかどうかです。私の状況では確かにこれを一度だけ実行するので、このタイミングにしたいです。
そして、はい、私のjsperfコードはおそらくいくつかの解決策を見逃しています。ですから、私が思いもよらなかったアプローチがあれば、遠慮なく追加してください!ありがとう!