我发现自己需要在JavaScript中合成一个可笑的长字符串(如数十兆字节长).(这是为了将CSS选择器匹配操作减慢到可测量的时间点.)
我发现这样做的最好方法是
var really_long_string = (new Array(10*1024*1024)).join("x");
Run Code Online (Sandbox Code Playgroud)
但我想知道是否有一种更有效的方法 - 首先不涉及创建数十兆字节的数组.
ale*_*511 20
对于ES6:
'x'.repeat(10*1024*1024)
Run Code Online (Sandbox Code Playgroud)
oli*_*ren 14
所接受的版本使用String.prototype.concat()这大大慢比使用优化的串串联操作,+.MDN还建议不要在速度关键代码中使用它.
我已经制作了上述代码的三个版本来显示JsPerf中的速度差异.将其转换为仅使用concat仅仅是使用字符串连接运算符的速度的三分之一(Chrome - 您的里程会有所不同).下面编辑的版本在Chrome中运行速度是原来的两倍
var x = "1234567890";
var iterations = 14;
for (var i = 0; i < iterations; i++) {
x += x+x;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12529 次 |
| 最近记录: |