JavaScript脚本性能的优化方法

2019-06-03 07:42:54刘景俊

i++;
}
var end = (new Date()).getTime();
WScript.Echo(end-start);
*/

function internCast(i){
return "" + i;
}

function StringCast(i){
return String(i)
}
function newStringCast(i){
return new String(i)
}
function toStringCast(i){
return i.toString();
}
function ParseInt(){
return parseInt(j);
}
function MathFloor(){
return Math.floor(j);
}
function Floor(){
return floor(j);
}
var pressure = 50000;
var a = "";
var floor = Math.floor;
j = 123.123;
print("-------------nString Conversion Test");
print("The empty:", benchmark(empty));
print("intern:", benchmark(internCast));
print("String:");
benchmark(StringCast);
print("new String:");
benchmark(newStringCast);
print("toString:");
benchmark(toStringCast);
print("-------------nFloat to Int Conversion Test");
print("parseInt");
benchmark(ParseInt);
print("Math.floor");
benchmark(MathFloor);
print("floor")
benchmark(Floor);

function newObject(){
return new Object();
}

function internObject(){
return {};
}
print("------------nliteral Test");
print("runtime new object", benchmark(newObject));
print("literal object", benchmark(internObject));

附录2
代码1:

for(var i=0;i<100;i++){
arr[i]=0;
}

代码2:

var i = 0;
while(i < 100){
arr[i++]=0;
}

代码3:


var i = 0;
while(i < 100){
arr[i]=0;
i++;
}

在firefox下测试这两段代码,结果是代码2优于代码1和3,而代码1一般优于代码3,有时会被代码3超过;而在IE 6.0下,测试压力较大的时候(如测试10000次以上)代码2和3则有时候优于代码1,有时候就会远远落后代码1,而在测试压力较小(如5000次),则代码2>代码3>代码1。

代码4:


var i = 0;
var a;
while(i < 100){
a = 0;
i++;
}


代码5:


var a;
for(var i=0;i<100;i++){
a = 0;
}
上面两段代码在Firefox和IE下测试结果都是性能接近的。

代码6:


var a;
var i=0;
while(i<100){
a=i;
i++;
}

代码7:


var a;
var i=0;
while(i<100){
a=i++;
}


代码8:


var a;
for(var i=0;i<100;i++){
a = i;
}

代码9:


var a;
for(var i=0;i<100;){
a = i++;
}

这四段代码在Firefox下6和8的性能接近,7和9的性能接近,而6, 8 < 7, 9;

最后我们来看一下空循环

代码10:

    for(var i=0;i<100;i++){   }


代码11:

    var i;
    while(i<100){        i++;    }