关于String的连接,一般大家常识性概念是Array.join比String+高效,今天又看到这个问题的讲述。好奇就把测试代码跑了一下,发现并非完全如此,其实在Opera和FireFox下的测试结果并非如此,大多数时候反而是String+消耗的时间少,只有IE6下,的确是String+是jion()的三四倍,估计FF和Opera会自动优化代码。10000次String+有时候消耗的时间是0ms
测试代码:
给出一组计算测试结果数据:
IE:
concatenation with plus:172ms
oncatenation with Array:47ms
Opera:
concatenation with plus:15ms
oncatenation with Array:32ms
FireFox:
concatenation with plus:16ms
oncatenation with Array:31ms
测试代码:
function
CompareTime()
... {
var d1=new Date();
var str="";
var i;
for(i=0;i<10000;i++)
...{
str+="text";
}
var d2=new Date();
//document.writeln(i+"<br/>");
//document.writeln(d1.getTime()+"<br/>");
//document.writeln(d2.getTime()+"<br/>");
document.writeln("concatenation with plus:" +(d2.getTime()-d1.getTime())+"ms"+"<br/>");
var oArray=new Array;
d1=new Date();
for(i=0;i<10000;i++)...{
oArray.push("text");
}
var sResult=oArray.join("");
d2= new Date();
//document.writeln(i+"<br/>");
//document.writeln(d1.getTime()+"<br/>");
//document.writeln(d2.getTime()+"<br/>");
document.writeln("oncatenation with Array:"+(d2.getTime()-d1.getTime())+"ms");
}
... {
var d1=new Date();
var str="";
var i;
for(i=0;i<10000;i++)
...{
str+="text";
}
var d2=new Date();
//document.writeln(i+"<br/>");
//document.writeln(d1.getTime()+"<br/>");
//document.writeln(d2.getTime()+"<br/>");
document.writeln("concatenation with plus:" +(d2.getTime()-d1.getTime())+"ms"+"<br/>");
var oArray=new Array;
d1=new Date();
for(i=0;i<10000;i++)...{
oArray.push("text");
}
var sResult=oArray.join("");
d2= new Date();
//document.writeln(i+"<br/>");
//document.writeln(d1.getTime()+"<br/>");
//document.writeln(d2.getTime()+"<br/>");
document.writeln("oncatenation with Array:"+(d2.getTime()-d1.getTime())+"ms");
}
<
body
>
< script language ="JavaScript" > ...
CompareTime();
</ script >
</ body >
< script language ="JavaScript" > ...
CompareTime();
</ script >
</ body >
给出一组计算测试结果数据:
IE:
concatenation with plus:172ms
oncatenation with Array:47ms
Opera:
concatenation with plus:15ms
oncatenation with Array:32ms
FireFox:
concatenation with plus:16ms
oncatenation with Array:31ms