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内核有所区别的一个问题所在!
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内核有所区别的一个问题所在!
相关文章推荐
- java基础:string与stringBuilder性能比较
- Java的String与StringBuffer、StringBuilder的性能比较
- String,StringBuffer,StringBuilder性能比较,线程安全测试,源码解析。
- 关于javascript中number类型与string类型的比较
- Java中String和StringBuilder性能比较
- 关于String和StringBuilder、StringBuffer的一个简单性能测试
- String,StringBuffer,StringBuilder的性能比较
- String、StringBuffer、StringBuilder区分和性能比较
- ASP.NET(C#) String, StringBuilder 与 StringWriter性能比较
- javascript中String Concat和StringBuilder类的性能比较
- String、StringBuffer、StringBuilder区分和性能比较
- String,StringBuffer,StringBuilder性能比较
- ASP.NET(C#) String, StringBuilder 与 StringWriter性能比较
- 关于Hashtable与ArrayList存储string的性能比较
- 关于String和StringBuilder、StringBuffer的一个简单性能测试
- .NET Framework中StringBuilder与string的性能比较
- 关于String ,StringBuffer,StringBuilder的比较
- string与StringBuilder之性能比较
- java中string.format与stringbuilder的性能比较
- java关于String 和StringBuilder比较