This Domain(Admin5.com) is for Sale:

如何优化JavaScript脚本的性能

时间:2007-12-27  来源:不详  作者:林子

var print;if(typeof document != "undefined" ){ print = function(){document.write(arguments[0]);}}else if(typeof WScript != "undefined" ){ print = function(){ WScript.Echo(arguments[0],arguments[1],arguments[2]); }}function empty(){}function benchmark(f){ var i = 0; var start = (new Date()).getTime(); while(i < pressure){ f(i ); } var end = (new Date()).getTime(); WScript.Echo(end-start);}/*i=0start = (new Date()).getTime();while(i < 60000){ c = [i,i,i,i,i,i,i,i,i,i]; i ;}end = (new Date()).getTime();WScript.Echo(end-start);i=0start = (new Date()).getTime();while(i < 60000){ c = new Array(i,i,i,i,i,i,i,i,i,i); 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("-------------String 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("-------------Float 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("------------literal Test");print("runtime new object", benchmark(newObject));print("literal object", benchmark(internObject));

织梦内容管理系统


附录2
代码1:
copyright dedecms

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

dedecms.com

代码2: 本文来自织梦

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

本文来自织梦

代码3:

织梦好,好织梦

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

copyright dedecms

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

代码4:

内容来自dedecms

var i = 0; var a; while(i < 100){ a = 0; i ; } 内容来自dedecms

代码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 ; }

dedecms.com

代码7:

织梦好,好织梦

var a; var i=0; while(i<100){ a=i ; } 本文来自织梦

代码8:

copyright dedecms

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

织梦内容管理系统

代码9:

内容来自dedecms

var a; for(var i=0;i<100;){ a = i ; }
这四段代码在Firefox下6和8的性能接近,7和9的性能接近,而6, 8 < 7, 9; 内容来自dedecms

最后我们来看一下空循环

copyright dedecms

代码10: 织梦内容管理系统

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

copyright dedecms

织梦内容管理系统

代码11:

织梦好,好织梦

var i; while(i<100){ i ; }
最后的测试出现了神奇的结果,Firefox下代码10所花的时间与代码11所花的大约是24:1。所以它不具备参考价值,于是我没有放在一开始给大家看。 织梦内容管理系统

看完这篇,您有何感觉呢?

文章评论

共有位Admini5网友发表了评论 查看完整内容

24小时热门信息