0

オブジェクトと単純な計算のどちらから情報を取得するのが速いですか? それらの間に顕著な違いはありますか?

環境:

  • ウェブ開発
  • js や jQuery を使用する
  • 1 ページで最大数百のアイテムが影響を受ける

以下は、情報を取得するオブジェクトのサンプルです。

var pModel = {
    1 : {sire: 3, dam: 4, herdList: settings.sireList},
    2 : {sire: 5, dam: 6, herdList: settings.damList},
    3 : {sire: 7, dam: 8, herdList: settings.sireList},
    4 : {sire: 9, dam: 10, herdList: settings.damList},
    5 : {sire: 11, dam: 12, herdList: settings.sireList},
    6 : {sire: 13, dam: 14, herdList: settings.damList}
};

コードを書いた後、データに固有の数学的パターンに気付きました。

// Where x is a number
pModel[x].sire == 2x+1;
pModel[x].dam == 2x+2;
(x%2=0) ? settings.damList : settings.sireList;

数学を使用することには明らかな将来性の利点がありますが、ここでは速度が主な考慮事項です。

4

2 に答える 2

3

少なくとも単純な数学では、数学の方が速いことがわかります。

http://jsperf.com/object-vs-calc

ここに画像の説明を入力

于 2013-01-12T19:26:30.837 に答える
1

アルゴリズムを知っていれば、オブジェクトリテラルさえ必要ありません。オブジェクト リテラルは、必要になる前にすぐに解釈されますが、数学は必要なプロセッサ/時間しか占有しません。

オブジェクト リテラルを使用すると、ルックアップにかかる時間は、数学的計算とオブジェクトのトラバースに関連する追加のオーバーヘッドに依存するため、数学的計算よりも長くなる可能性があります。

数学と一緒に行きます。

于 2013-01-12T19:19:48.133 に答える