今天忽然想起测一下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/>');
测试结果如下:![](/Images/OutliningIndicators/None.gif)
2
![](/Images/OutliningIndicators/None.gif)
3
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
4
![](/Images/OutliningIndicators/InBlock.gif)
5
![](/Images/OutliningIndicators/InBlock.gif)
6
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
7
![](/Images/OutliningIndicators/None.gif)
8
![](/Images/OutliningIndicators/None.gif)
循环用时IE下32S,FireFox下2S
2.使用StringBuilder:
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/ExpandedBlockStart.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/InBlock.gif)
![](/Images/OutliningIndicators/ExpandedBlockEnd.gif)
![](/Images/OutliningIndicators/None.gif)
![](/Images/OutliningIndicators/None.gif)
测试结果如下:
50W次IE下6S,FireFox下3S
结果相差竟然如此之大。IE下显然是用StringBuilder的效率要高于+=的效率,可是在FireFox下无论使用StringBuilder还是不使用之均无较大的差别。