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

javascript中关于Plus(String)和StringBuilder的性能比较

2007-09-27 01:46 537 查看
今天做了一下在客户端实现类似ASP.NET中的String与StringBuilder类的速率比较,其中StringBuilder的JS类为:

function StringBuilder() {

this.__strings__ = new Array;

}

StringBuilder.prototype.append = function (str) {

this.__strings__.push(str);

};

StringBuilder.prototype.toString = function () {

return this.__strings__.join("");

};

方法append与toString对StringBuilder原型做了function扩展,测试数据的JS代码为:

var d1 = new Date();

var str = "";

for (var i=0; i < 10000; i++) {

str += "leepy";

}

var d2 = new Date();

document.write("通过加号串连的测试: " + (d2.getTime() - d1.getTime()) + " 毫秒");

var sb = new StringBuilder();

d1 = new Date();

for (var i=0; i < 10000; i++) {

sb.append("leepy");

}

var result = sb.toString();

d2 = new Date();

document.write("<br />通过StringBuilder串连的测试: " + (d2.getTime() - d1.getTime()) + " 毫秒");

通过测试在IE浏览器得到如下运行数据:

---------------------------------------------

通过加号串连的测试: 1022 毫秒

通过StringBuilder串连的测试: 110 毫秒

---------------------------------------------

多测试几次,可以发现前者总是远大于后者,说明后者性能更好。

但是,在最近的FireFox版本下测试数据发现前者会小于后者,但是相差不大,看上去像FF存在String串连的问题,比如说FireFox 1.0 以及版本之后。我也不知道为什么,不知道是不是FF浏览器内核跟IE内核有所区别的一个问题所在!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: