2016-03-07 213 views
0

我使用以下字符對象(如下所示)構建字符串密集字符描述。效率非常重要,我知道具有長字符串的數組會變得很快。假設在這兩種情況下,屬性都可以很容易地被引用,並且值是相同的,就效率而言,以下兩個對象之間是否存在重大差異?更多對象屬性與數組對象的更少對象

this.genphysdesc = genphysdesc; 
this.facetype = facetype; 
this.bodytype = bodytype; 
this.haircol = haircol; 
this.gender = gender; 
this.pronA = pronA; 
this.pronB = pronB; 
this.pronC = pronC; 
this.pronD = pronD; 

VS.

無論哪種情況,值都是大約5-35個字符的字符串。

讓我知道這是否有任何不清楚。謝謝你的幫助!

+1

測試它。這種性能優化恰恰落在了「不成熟優化」陣營。即使存在差異,它在不同的瀏覽器中可能會有明顯的不同,並且瀏覽器間的差異可能比對象結構之間的差異更大。只要做到這一點似乎是最好的,並且如果稍後出現問題,就可以解決問題。 – RobG

+0

@RobG感謝您的反饋!我應該提到,爲了合理化和輕微但明顯的性能提升,我將大量數組轉換爲對象。到目前爲止,我所測試的內容似乎很穩固,但我想在比預期更嚴格的情況下與比自己更有經驗的人進行覈實,並以無法預料的方式結束。我對JS還是比較陌生,所以關於瀏覽器間性能差異的提示是非常有用的信息。我從你的回答中看出,你沒有看到任何顯而易見的理由選擇一種方法而不是另一種方法。非常感激。 – corvidia

回答

0

您的第一個案例使用了第二個使用的數組的對象。

假設你想在陣列之間的差異:

// Hoisting section 
var a = []; 
var propA, propB, propC, propD, propE, propF; 
propA = 1; 
propB = 2; 
propC = 3; 
propD = 4; 
propE = 5; 
propF = 6; 



a.push(propA); 
a.push(propB); 
a.push(propC); 
a.push(propD); 
a.push(propE); 
a.push(propF); 

// vs. 

a = [ propA, propB, propC, propD, propE, propF ]; 

console.log(a); 

第二個版本只有這麼一次分配的更快。對象分配對於不同的語法將是相同的。

看一看提升:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/var

有一些性能上的差異和基準[]對推語法: Is there a reason JavaScript developers don't use Array.push()?

+0

我突出了所提出的差異,但編輯了我的答案,突出顯示了我鏈接的吊裝。 –

+0

感謝您的快速響應!直到現在,我幾乎完全沒有使用陣列,沒有推動,正是由於這個原因 - 性能。我發現它運行緩慢,可能是由於交叉引用的數量(?)。正因爲如此,爲了改善組織,我開始將項目合併到對象中。我只是想知道,在這個轉換過程中,如果對於擁有更多單獨屬性與將屬性作爲數組進行合併有任何益處,那麼在這之前,我們會感到太過分了。感謝您的鏈接。 – corvidia

相關問題