2017-05-16 7 views
-1

js関数をSetまたはArrayに格納する方が良いですか? 私は、バイナリツリーをどのように理解していますか?セットに格納するには比較機能が必要です。JS集合と関数を格納する配列

"better"とは、すべてのエントリのパフォーマンス、検索、削除、最後にforループの読み書きを意味します。私は各フレームでこれらの関数を呼び出します。時間を節約することは非常に重要です。

メモリについては、機能はそれほど多くなく、配列あたり100-500個の機能を持ち、5-10個の配列を持つため、あまり気にしません。全体的な1000-5000の機能。

私は、セットが追加と削除に優れていることを知っています。配列は要素を反復する方が良いです。しかし、それがどのように機能するのかわかりません。

+0

「Setオブジェクトでは、プリミティブ値でもオブジェクト参照でも**固有の**値を**保存することができます」 – mhodges

+1

「より良い」という意味を明確にすることはできますか? – Soviut

+0

私は知っています。私はユニークな機能を保存します。 私はちょうどどちらが機能のために良いか知りたい。 数字や文字列の場合は、検索と削除の際にセットに保存する方が良いことがわかります。 – Gor

答えて

0

すべてのパフォーマンスケースでは、パフォーマンスメトリックが毎年変更される可能性があるため、両方のプロファイルを作成する必要があります。おそらく何十万ものアイテムに入るまで、測定可能なパフォーマンスの違いに気づくつもりはありません。

質問で定義した仕様に基づいて、簡単な答えは重要ではありません。関数はJavascriptのファーストクラスの市民であるため、配列やセットがデータに対してどのように機能し、どのように関数に作用するかに違いはありません。

フレームごとに数千もの機能を繰り返しても、パフォーマンスの問題は起こりません。これはJavaScriptのコア機能であり、すでに高度に最適化されています。あなたが最適化する必要がある場所は、関数が複雑なほど、実行するのにかかる時間が長くなるからです。

これで心配するのではなく、配列を使用してプロジェクトをビルドし、パフォーマンスのボトルネックが発生したかどうかを確認してください。次に、コードをプロファイルして、それらのボトルネックがどこで発生しているかを確認できます。それらは配列操作によるものではなく、関数自体でのコードの実行によるものです。

+0

Ok @Soviut私は質問を更新しました。 – Gor

+0

@Gor私はあなたの質問を反映するために私の答えを更新しました。短い答えは、これはあなたのパフォーマンスのボトルネックになることはありませんので、単に配列を使用してください。 – Soviut