Javascript字符串连接比这个例子更快?
-
03-07-2019 - |
题
我必须在Javascript中连接一堆字符串,并且我正在寻找最快的方法。我们假设Javascript必须创建一个大的XML-“文件”。当然,它由许多小字符串组成。所以我想出了:
var sbuffer = [];
for (var idx=0; idx<10000; idx=idx+1) {
sbuffer.push(‘<xmltag>Data comes here... bla... </xmltag>’);
}
// Now we "send" it to the browser...
alert(sbuffer.join(”));
不要注意循环或其他“复杂”的循环。构建示例的代码。
我的问题是:对于未知数量的字符串,您是否有更快的算法/方法/想法将许多小字符串连接到一个巨大的字符串?
解决方案
更改行:
sbuffer.push(&#8216;数据来到这里...... bla ...&#8217;); 代码>
到
sbuffer [sbuffer.length] =&#8216;数据来到这里...... bla ...&#8217 ;; 代码>
将为您提供5-50%的速度增益(取决于浏览器,在IE中 - 增益将是最高的)
问候。
其他提示
JavaScript字符串连接的问题已接受链接到非常好的JavaScript字符串连接性能比较。
修改强> 我想如你所说,你可以通过使用Duff的设备来提高性能。
我认为你非常接近最佳状态。 YMMV,在主机进程的JavaScript引擎(例如浏览器)中获得或丢失了很多速度。
我认为将字符串推送到数组然后加入数组是JavaScript中字符串连接的最快技术。在讨论W3C DOM与innerHTML 的讨论中,有一些支持性证据。注意innerHTML 1和innerHTML 2结果之间的区别。
据我所知,您的算法很好,并且被称为字符串连接问题的高效解决方案。
小心IE坏垃圾收集器!使用后你想对你的阵列做什么?可能它会得到GC吗?
你可以获得与联接连接的性能,然后在后GC的时候输掉。另一方面,如果您一直将数组放在范围内,并且不重复使用,那么这可能是一个很好的解决方案。
就个人而言,我想要最简单的解决方案:只使用+ =运算符。
您可以通过缓冲获得更快的速度。