更多对象属性与数组对象的更少对象

更多对象属性与数组对象的更少对象

问题描述:

我使用以下字符对象(如下所示)构建字符串密集字符描述。效率非常重要,我知道具有长字符串的数组会变得很快。假设在这两种情况下,属性都可以很容易地被引用,并且值是相同的,就效率而言,以下两个对象之间是否存在重大差异?更多对象属性与数组对象的更少对象

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

您的第一个案例使用了第二个使用的数组的对象。

假设你想在阵列之间的差异:

// 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