javascript string字符串优化问题


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

google
array所用时间17
str连接所用时间100
去查查jion的机制再写吧。
ps:浏览器版本
google12.0.742.122
ff5.0.1
opera11.50
ie8.0.6001.18702
pss:ie处理速度不给力
Javascript 相关文章推荐
JQuery autocomplete 使用手册
Apr 01 Javascript
jquery ajax 同步异步的执行 return值不能取得的解决方案
Jan 08 Javascript
jquery插件制作 提示框插件实现代码
Aug 17 Javascript
javascript之typeof、instanceof操作符使用探讨
May 19 Javascript
javaScript面向对象继承方法经典实现
Aug 20 Javascript
node.js中的console用法总结
Dec 15 Javascript
js获取元素外链样式的方法
Jan 27 Javascript
jQuery animate easing使用方法图文详解
Jun 17 Javascript
jQuery实现select模糊查询(反射机制)
Jan 14 Javascript
Bootstrap Paginator+PageHelper实现分页效果
Dec 29 Javascript
angular多语言配置详解
May 16 Javascript
JavaScript中时间格式化新思路toLocaleString()
Nov 07 Javascript
超级有用的13个基于jQuery的内容滚动插件和教程
Jul 31 #Javascript
基于JQuery 的消息提示框效果代码
Jul 31 #Javascript
使用基于jquery的gamequery插件做JS乒乓球游戏
Jul 31 #Javascript
JQuery通过Ajax提交表单并返回结果
Jul 31 #Javascript
Dreamweaver jQuery智能提示插件,支持版本提示,支持1.6api
Jul 31 #Javascript
动态加载外部javascript文件的函数代码分享
Jul 28 #Javascript
工作需要写的一个js拖拽组件
Jul 28 #Javascript
You might like
开发大型PHP项目的方法
2006/10/09 PHP
Adodb的十个实例(清晰版)
2006/12/31 PHP
php getsiteurl()函数
2009/09/05 PHP
PHP 显示客户端IP与服务器IP的代码
2010/10/12 PHP
PHP中判断变量为空的几种方法分享
2013/08/26 PHP
PHP中Http协议post请求参数
2015/11/02 PHP
WordPress开发中的get_post_custom()函数使用解析
2016/01/04 PHP
php正则表达式基本知识与应用详解【经典教程】
2017/04/17 PHP
在laravel中实现ORM模型使用第二个数据库设置
2019/10/24 PHP
ext form 表单提交数据的方法小结
2008/08/08 Javascript
JavaScript instanceof 的使用方法示例介绍
2013/10/23 Javascript
jQuery获取选中内容及设置元素属性的方法
2014/07/09 Javascript
微信小程序-详解数据缓存
2016/11/24 Javascript
JS常用知识点整理
2017/01/21 Javascript
Bootstrap Table使用整理(一)
2017/06/09 Javascript
angularjs $http调用接口的方式详解
2018/08/13 Javascript
JavaScript实现轮播图效果代码实例
2019/09/28 Javascript
echarts浮动显示单位的实现方法示例
2020/12/04 Javascript
[01:45]2014DOTA2 TI预选赛预选赛 战前探营!
2014/05/21 DOTA
处理Python中的URLError异常的方法
2015/04/30 Python
Python使用cx_Oracle模块操作Oracle数据库详解
2018/05/07 Python
python清空命令行方式
2020/01/13 Python
pyspark 随机森林的实现
2020/04/24 Python
利用python汇总统计多张Excel
2020/09/22 Python
HTML5-WebSocket实现聊天室示例
2016/12/15 HTML / CSS
HTML5本地存储之Web Storage详解
2016/07/04 HTML / CSS
德国最大的网上足球商店:11teamsports
2019/09/11 全球购物
商业街策划方案
2014/05/31 职场文书
庆国庆活动总结
2014/08/28 职场文书
贫困证明模板(3篇)
2014/09/16 职场文书
学习十八届四中全会依法治国心得体会
2014/11/03 职场文书
工人先锋号事迹材料
2014/12/24 职场文书
新郎婚礼致辞
2015/07/27 职场文书
浅谈Python中的正则表达式
2021/06/28 Python
Android使用EventBus发送消息,Fragment中接收消息的方法会执行多次
2022/04/24 Java/Android
python使用shell脚本创建kafka连接器
2022/04/29 Python