-
- <!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="点我"/>
- </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
复制代码
google
array所用时间17
str连接所用时间100
去查查jion的机制再写吧。
ps:浏览器版本
google12.0.742.122
ff5.0.1
opera11.50
ie8.0.6001.18702
pss:ie处理速度不给力 |