今天忽然想起测一下JS下的StringBuilder对象的效率,于是写了个循环来小测了一下,结果有点意外
1. 直接使用 += 运算符的循环5万次:
1 var sbTest//=new Sys.StringBuilder();
2 for(var i=0;i<50000;i++)
3 {
4 var now=new Date();
5 sbTest += now.getSeconds() + "<br/>";
6 }
7
8 $get("message").innerHTML=sbTest;//.toString('|<br/>');
测试结果如下:2 for(var i=0;i<50000;i++)
3 {
4 var now=new Date();
5 sbTest += now.getSeconds() + "<br/>";
6 }
7
8 $get("message").innerHTML=sbTest;//.toString('|<br/>');
循环用时IE下32S,FireFox下2S
2.使用StringBuilder:
var sbTest=new Sys.StringBuilder();
for(var i=0;i<50000;i++)
{
var now=new Date();
sbTest.append(now.getSeconds());
}
$get("message").innerHTML=sbTest.toString('|<br/>');
for(var i=0;i<50000;i++)
{
var now=new Date();
sbTest.append(now.getSeconds());
}
$get("message").innerHTML=sbTest.toString('|<br/>');
测试结果如下:
50W次IE下6S,FireFox下3S
结果相差竟然如此之大。IE下显然是用StringBuilder的效率要高于+=的效率,可是在FireFox下无论使用StringBuilder还是不使用之均无较大的差别。
点个广告: