JavaScript屬性訪問(在當前實現上)的性能特徵是什麼?Javascript大型O屬性訪問性能
- 假設數組訪問是O(1)是否安全?
如果我使用一個對象作爲哈希表(帶有字符串鍵),我可以安全地假設O(1)或O(log n)的訪問時間?
是否有任何常見的瀏覽器或環境比別人顯着更快/更慢,我應該留意?
JavaScript標準有什麼可說的嗎?
而且最重要的是:
- 我在哪裏可以找到這種漸進的JavaScript性能問題的很好的參考?
JavaScript屬性訪問(在當前實現上)的性能特徵是什麼?Javascript大型O屬性訪問性能
如果我使用一個對象作爲哈希表(帶有字符串鍵),我可以安全地假設O(1)或O(log n)的訪問時間?
是否有任何常見的瀏覽器或環境比別人顯着更快/更慢,我應該留意?
JavaScript標準有什麼可說的嗎?
而且最重要的是:
在JavaScript中的每個對象被實現爲對象的散列,所以沒有功能上的差異。
例如,看看這個測試:作爲位置使用時
var arr = [];
arr[5] = 5;
arr['5'] = 'not 5';
console.log(arr.length, arr);
// output: 6 [undefined, undefined, undefined, undefined, undefined, "not 5"]
數字被字符串化。
有關JavaScript的更多信息,請參閱Crockford's website。在特別重要的部分是標題下的「陣列」:
Arrays in JavaScript are also hashtable objects.
性能是不是一個真正的問題,除非你有一噸的對象跟蹤(如500,000),在這種情況下,你」可能做錯了什麼。
有優化,你可以做,但他們並沒有真正意義,除非你正在做一些不自然的JavaScript(如壓縮算法......我曾在JS的LZMA實現...壞主意)。
注:
如果你有一個備用的一套(像你只定義了10項指標進行10000),你或許應該使用常規的對象。數組將初始化所有10,000個索引爲「未定義」,而Object.keys(obj)
將只報告您設置的10個索引。這是一個小小的優化,實際上是有道理的。
了什麼你對自己所做的研究告訴你任何的這些問題? –
我不想做了很多的研究我自己的東西,一個)我可能會得到錯誤的反正和b)很可能已被更多人熟悉的話題,然後我已經做了。 – hugomg
更新:有沒有什麼可以保證一定的時間用於訪問的JavaScript對象的屬性?](http://stackoverflow.com/q/34292087/1048572) – Bergi