我必须在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的时候输掉。另一方面,如果您一直将数组放在范围内,并且不重复使用,那么这可能是一个很好的解决方案。

就个人而言,我想要最简单的解决方案:只使用+ =运算符。

您可以通过缓冲获得更快的速度。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top