我发现自己需要用JavaScript合成一个长得离谱的字符串(例如数十兆字节长)。 (这是为了将CSS选择器匹配操作的速度减慢到需要可测量的时间。)
我发现做到这一点的最好方法是
var really_long_string = (new Array(10*1024*1024)).join("x");
但我想知道是否有一种更有效的方法-不涉及首先创建数十兆字节的数组的方法。
最佳答案
接受的版本使用String.prototype.concat()
,即vastly slower,而不是使用优化的字符串连接运算符+
。 MDN还使用recommends来避免在速度要求严格的代码中使用它。
我已将上面的代码制成three versions,以显示JsPerf中的速度差异。将其转换为仅使用concat
的速度仅是使用字符串连接运算符的速度的三分之一(Chrome-您的里程会有所不同)。以下修改后的版本在Chrome中的运行速度是以前的两倍
var x = "1234567890";
var iterations = 14;
for (var i = 0; i < iterations; i++) {
x += x+x;
}