Posted in Javascript onJuly 31, 2011
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title>test</title> <script type="text/javascript"> function winProps(){ var message = []; var str; var data = new Date(); var mils1 = data.getTime(); //array数组 for(var i = 0; i<500000;i++) message.push("This window is "); message.join(" "); data = new Date(); var mils2 = data.getTime(); arrayMils = mils2 - mils1; //字符串直接连接 for(var i = 0; i<500000;i++) str+="This window is "; data = new Date(); var mils3 = data.getTime(); stringMils=mils3-mils2; //显示内容,不重要 var mes = []; mes.push("时间1:"); mes.push(mils1); mes.push("\n时间2"); mes.push(mils2); mes.push("\n时间3"); mes.push(mils3); mes.push("\narray所用时间"); mes.push(arrayMils>=0?arrayMils:arrayMils+1000); mes.push("\nstr连接所用时间"); mes.push(stringMils>=0?stringMils:stringMils+1000); alert(mes.join(" ")); } </script> </head> <body> <input type="button" value="点我" onclick="winProps();"/> </body>
结果不像一般的说法,用array会快。在ie9,8。ff,google,搜狗等ie核心的浏览器下测试了一下,确实在数量级100000以上的测试中array方法比用“+”的方法会慢。
1000000次的结果
ie第一次(大概,ie复制不了,图就不截了)
array所用时间 890 str连接所用时间 450
ie可能是内存没有回收第二次点会弹出警告,并且时间用到1400和1200,点多几次后,+=的连接方式耗时回到400,难倒是array对象没有回收?打开任务管理器,再刷新一次ie浏览器,内存降了100多m,应该研究一下ie的javascript内存回收机制。
ff
时间1: 1312102053720 时间2 1312102053842 时间3 1312102053882 array所用时间 122 str连接所用时间 40
google(也复制不了数据)
array所用时间 200
str连接所用时间 100
opera
时间1: 1312102258270
时间2 1312102258460
时间3 1312102258592
array所用时间 190
str连接所用时间 132
顺便说一下,在数据到5000000后ff抛出了个异常,应该是内存溢出了。。。(ps,不是很懂)
错误: uncaught exception: 8.375396749959738e-274
在ie下测试果断警告,再后来out of memory。
当然怎么大的数据连接,在现在的网页是不可能出现,数据处理应该是在后台做的。老师的主机不敢装这么多浏览器
其实是array的jion,太消耗时间。没有加入这一句之后opera,google就显示出array的优势:
opera结果:
时间1: 1312101715553 时间2 1312101715622 时间3 1312101715749 array所用时间 69 str连接所用时间 127 [code] ie结果 array所用时间700 str连接所用时间500 ff [code] 时间1: 1312101925895 时间2 1312101925945 时间3 1312101925979 array所用时间 50 str连接所用时间 34
array所用时间17
str连接所用时间100
去查查jion的机制再写吧。
ps:浏览器版本
google12.0.742.122
ff5.0.1
opera11.50
ie8.0.6001.18702
pss:ie处理速度不给力
javascript string字符串优化问题
声明:登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述。
Reply on: @reply_date@
@reply_contents@