复制代码 代码如下: <!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 google array所用时间17 str连接所用时间100 去查查jion的机制再写吧。 ps:浏览器版本 google12.0.742.122 ff5.0.1 opera11.50 ie8.0.6001.18702 pss:ie处理速度不给力
推荐阅读
各浏览器对click方法的支持差异小结
如下
IE6/7/8/9/Opera12/Firefox5
Safari5/Chrome12
INPUT[type=text]INPUT[type=password]INPUT[type=radio]INPUT[type=checkbox]INPUT[type=button]INPUT[type=submit]INPUT[type=image]INPUT[type=hidden>>>详细阅读
本文标题:javascript string字符串优化问题
地址:http://www.17bianji.com/kaifa2/JS/24362.html
1/2 1