JavaScript 中字符串 concat 的可怕性能

Horrible performance for string concat in JavaScript?

本文关键字:性能 concat 字符串 JavaScript      更新时间:2023-09-26

我正在尝试将一个在包含 672 个元素的本地网页中修改的数组发布回服务器。为此,我把它放在一个字符串中,用逗号分隔,在Javascript中,如下所示:

    alert("begin");
    var sBsbData=""
    for (var x=0;x<24*4*7;x++)
        sBsbData = sBsbData + BsbData[x] + ',';
    alert(sBsbData);

BsbData 是一个 int 数组;值不超过 10。

这是任何处理器都会毫不眨眼地处理的代码......然而,两个警报之间大约需要十秒钟!我在这里做错了什么??为此,我是否选择了特别糟糕的 concat 方法?

它并不慢 - 这是需要一段时间才能创建的alert(出于某种奇怪的原因)。

概念验证:

var BsbData = [];
for (var i = 0; i < 24 * 4 * 7; i++) {
    BsbData[i] = Math.round(Math.random() * 10);
}
console.log("begin");
alert("begin");
var sBsbData=""
for (var x=0;x<24*4*7;x++)
    sBsbData = sBsbData + BsbData[x] + ',';
console.log(sBsbData);
// !!! This is where the code will halt for a bit (the string has already been created) !!!
alert(sBsbData);

也就是说 - 你应该只使用var sBsbData = BsbData.join(',');