串联会消耗大量内存,如何对其进行优化?

时间:2018-11-27 13:38:10

标签: javascript concatenation ram

串联消耗大量内存。如果我们认为该字符占用〜2个字节,则结果代码行应占用约〜20 MB,但是当下面显示的代码工作时,该页面消耗约1GB。试图使用Join或执行操作s + ='q';在功能等方面,没有任何帮助。我该如何优化,例如在“ .net”中有一个StringBuilder?

var i = 0
       var s = "q";
   while (i <10000000) {
     s + = 'q';
 
     i ++;
   }

P.S。

let str = Array (10000000) .fill (`g`) .join``;

'g'.repeat (10000000)

不合适,需要串联。

2 个答案:

答案 0 :(得分:1)

您仍然可以使用join-您不需要一次fill一次创建整个数组:

var i = 0;
var a = [];
while (i <10000000) {
    a[i] = 'q';
    i++;
}
var s = a.join('');

这样,您可以将所需的任何字符(或较大的字符串)“连接”到数组的元素中,然后最后一次完成所有操作的结合。

答案 1 :(得分:0)

尝试向Web服务器发出Http请求,该服务器可以执行此操作,并且仅返回结果。我也会尝试使用网络工作者(新的浏览器支持它),但是我不确定内存消耗。但它不会使用UI线程。

然后我将使用setTimeout将此操作分解为一组较小的操作,例如制作100 100000个字符串,然后对其进行合并,而不是合并10000000个char字符串。