Javascript中的字符串连接效率如何?

时间:2010-09-23 18:04:27

标签: javascript performance concatenation

var myName = 'Bob';
myName += ' is a good name';

对于长期操作,它有更好的方法吗?也许使用StringBuffer类型的结构?

谢谢! :)

4 个答案:

答案 0 :(得分:5)

'更好'的方式是:

var nameparts= ['Bob'];
nameparts.push(' is a good name');
...
nameparts.join('');

然而,大多数现代JavaScript实现现在都会检测到天真的连接,并且在很多情况下可以优化它,因为很多人都有这样的编写代码(唉)。因此,在实践中,“好”的方法今天不会像以前那样快。

答案 1 :(得分:1)

  

只需使用中间字符串即可获得巨大的性能提升!可以在JavaScript中创建类似StringBuffer的类,以获得更高的性能提升。

请参阅完整的文章和图表here

答案 2 :(得分:1)

字符串连接的效率取决于您使用的浏览器。你可以google进行统计,youtube上还有一个googleTalk。从我记忆中来看,大多数浏览器在元素数量低于几千时有效地处理字符串连接。之后IE以指数速率减速,当firefox,chrome和safari做得更好时。这可能会改变,因为现在IE9并不是那么遥远。

答案 3 :(得分:0)

我曾经读过一篇关于这个主题的文章,它提供了一些用数组构建缓冲字符串的代码:

http://www.softwaresecretweapons.com/jspwiki/javascriptstringconcatenation

我自己进行了测试,在IE中速度更快......在Firefox中速度更慢了!

总结一下:那里有很多JavaScript引擎,我们无法真正依赖这种实现细节。如果这是一个问题,你会发现。在此之前,不要太在意。