您的位置:首页 > Web前端 > JavaScript

《JavaScript高级程序设计》——字符串连接性能测试

2016-07-15 13:05 513 查看
在进行字符串连接时,可以采用

加号

数组复制

两种方式进行连接,加号连接会重复执行创建字符串、复制字符串的操作,非常消耗资源,有可能会造成性能问题;采用数组对象存储,然后用join方法创建最后的字符串可以避免这个问题。

预期的结果:使用StringsBuffer类比使用加号节省50%~66%的时间。


/**
* 使用StringBuffer类打包连接字符串的功能
*/
function StringBuffer() {
this._strings_ = new Array;
}
StringBuffer.prototype.append = function(str) {
this._strings_.push(str);
}
StringBuffer.prototype.toString = function() {
return this._strings_.join("");
}

var d1 = new Date();
var str = "";
for (var i = 0; i < 10000; i++) {
str += "text"
}

var d2 = new Date();

document.write("Concatenation with plus: "+(d2.getTime()-d1.getTime()) + " milliseconds");

var oBuffer = new StringBuffer();

d1 = new Date();

for (var i = 0; i < 10000; i++) {
oBuffer.append("text");
}
var sResult = oBuffer.toString();

d2 = new Date();

document.write("<br/>Concatenation with StringBuffer: "+(d2.getTime()-d1.getTime()) + " milliseconds");


上边的代码就是将字符串连接次数设置为10000次,然后根据计算时间差来比较两种方式字符串连接的性能:

对chrome、Firefox、IE浏览器进行了测试,在将i修改为i = 100000时,测试结果如图所示:



根据上图可以看出,测试结果并不如预期,只有chrome浏览器基本上是符合预期的,其他的两个浏览器都是和预期的结果相反;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: