2016-05-07 7 views
1

LokiJSはキーによる標準のjavascriptオブジェクトアクセスとどのように比較されますか?LokiJSと標準のJavascriptオブジェクトへのアクセス

var obj = {}; 

for (var i = 0; i < 10000; i++) { 
    obj[i] = { name: 'name', description: 'desc', misc: 'misc' }; 
    lokicollection.insert({ id: i, name: 'name', description: 'desc', misc: 'misc' }); 
} 

キーでオブジェクトに直接アクセスすると、LokiJSを使用するとパフォーマンスが向上しますか?

alert(obj[id].name); 
alert(lokicollection.by('id', id).name); 

オブジェクトを列挙すると、LokiJSを使用するとパフォーマンスが向上しますか?

var item, arr = lokicollection.where(function(obj) { return true }); 
for (var i = 0; i < arr.length; i++) { 
    item = arr[i]; 
} 

var item, keys = Object.keys(obj); 
for (var i = 0; i < keys.length; i++) { 
    item = obj[keys[i]]; 
} 
+1

それを持って測る。あなたがそれを確実に測定できないならば、それは問題ではありません。 – zerkms

+1

ブラウザの開発者ツールまたはローカルプロファイリングツールを使用して、パフォーマンスを比較することができます。それはあなたが興味を持っている環境に信頼できる答えを得る唯一の方法です。 –

答えて

1

脇のdevのツールとアドホックなベンチマークについては非常に有効なコメントから、一番下の行は、JSのデータ構造上のパフォーマンスを簡単に一般化することはできないということです。スパース配列は密度の高い配列と同様に機能しません。混合型配列は、配列型の配列に含まれるデータに基づいてインテリジェントに最適化する傾向があるため、単一型配列と同様に機能しません。 LokiJSは高速で、醜いが高速な繰り返し(forEachの代わりにfor-loopなど)と配列の密集を維持するように最適化されていますが、最終的にLokiJSは索引付け、ビューの表示、イベントの発行など、オペレーションは、単純な配列挿入操作にはないコストであるパフォーマンスコストを伴います。 LokiJSのようなソリューションの有用性は、フィルタリング/ソートされたデータの高速取得、ビューのバックグラウンド再計算(データをdisk/localstorage/indexeddbに保存する機能)です。あなたが永続性を必要としなければ、管理するデータの負荷がない限り、私はあなたが実際にLokiJSからパフォーマンスを得るとは思わないのです。これはLokiJSを書いた人から)

+0

うわー!あなたは10,000アイテム(それぞれ10フィールド)をデータの「負荷」と見なしますか?素晴らしい仕事btw! – wayofthefuture

+0

@ Dude2TheNそうですね、たくさんのデータのようですね!ありがとう! –

+0

だから、セット全体を列挙するとき、item = arr [i]といっしょに減速する可能性があると思っていました。なぜなら、繰り返しごとにオブジェクトのプロパティをルックアップする必要があるからです。 Lokiでそのパフォーマンスを向上させる方法についての任意の考えですか? – wayofthefuture

関連する問題