我最近一直在使用线性解析器,并注意到谷歌Chrome(v37)的性能比Firefox(v30)慢得多。然后我怀疑问题与我迭代字符串的方式有关。
在jsPerf中玩了一下,发现了这个:
var obj = { str: 'hello' };
for (var i = 0, len = obj.str.length, str = ''; i < len; i++) {
str += obj.str[i];
}
比这慢约85%:</ p>
var obj = new function () {
this.str = 'hello';
};
for (var i = 0, len = obj.str.length, str = ''; i < len; i++) {
str += obj.str[i];
}
Chrome中的(第8版)。
在Firefox(SpiderMonkey)和Safari(SFX / Nitro)中,它们之间的性能差异可以忽略不计(小于2%)。
我的问题是:为什么“原生对象”仅在Chrome中速度较慢以及为什么会这样?