2013-01-07 13 views
0

我已經將一些事件記錄到json對象中,所以從性能角度來看,許多子對象有什麼更好?對象性能,什麼是較好的長項或多項?

爲了更好的解釋來看看這兩個對象:

(長對象)

var eventsObj = { 
    target: { 
    timestamp1: window, 
    timestamp2: document, 
    timestamp3: document 
    }, 
    keyCode: { 
    timestamp1: 0, 
    timestamp2: 66, 
    timestamp3: 67 
    }, 
    mouseX: { 
    timestamp1: 1, 
    timestamp2: 2, 
    timestamp3: 3 
    }, 
    mouseY: { 
    timestamp1: 0, 
    timestamp2: 1, 
    timestamp3: 2 
    } 
    ...etc... 
}; 

第二(多個對象)

var eventsObj = { 
    timestamp1: { 
    target: window, 
    keyCode: 0, 
    mouseX: 1, 
    mouseY: 0 
    }, 
    timestamp2: { 
    target: document, 
    keyCode: 66, 
    mouseX: 2, 
    mouseY: 1 
    }, 
    timestamp3: { 
    target: document, 
    keyCode: 67, 
    mouseX: 3, 
    mouseY: 2 
    } 
    ...etc... 
}; 

更新

http://jsperf.com/object-performance-long-items-or-many-items

+0

對於性能,它將取決於您對數據所做的操作。對我來說(特別是作爲一個數據庫人員)第二種形式更好,因爲所有關於對象的數據都包含在其中 – timc

+0

如果你關心的只是性能而不是設計,請嘗試http://jsperf.com/。 「更好」是主觀的,更好的表現並不總是「更好」。 –

+0

@timc我會遍歷他們重現一些事件... – yckart

回答

0

就內存消耗而言,兩者將(幾乎)相同。性能取決於您打算如何迭代和使用該對象。

但是,第二種表示法更具可讀性和語義正確性。

+0

我會遍歷他們重現一些事件...你能解釋你的想法*幾乎*有點? – yckart

+0

如果使用'(字符數)*(字符大小)'計算內存佔用將相同。編碼差異可能會導致略有差異(因此差不多),但我們所談論的是<0.1%(球場數字)。 – xbonez

0

我會說第二個,因爲在第一個案例中,您可能會得到幾條語句,包括一個或幾個循環以獲取一個事件的數據;而在第二種情況下只有一個'for ... in'循環將足夠用於檢索單個事件的數據

相關問題