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 相关文章推荐
Javascript &amp; DHTML 实例编程(教程)基础知识
Jun 02 Javascript
JS 文字符串转换unicode编码函数
May 30 Javascript
jQuery的.live()和.die() 使用介绍
Sep 10 Javascript
JS动态增加删除UL节点LI及相关内容示例
May 21 Javascript
javascript简单判断输入内容是否合法的方法
May 11 Javascript
实例讲解JavaScript中的this指向错误解决方法
Jun 13 Javascript
微信小程序开发之toast等弹框提示使用教程
Jun 08 Javascript
JS如何实现在页面上快速定位(锚点跳转问题)
Aug 14 Javascript
JS实现快递单打印功能【推荐】
Jun 21 Javascript
基于JavaScript实现大文件上传后端代码实例
Aug 18 Javascript
echarts饼图各个板块之间的空隙如何实现
Dec 01 Javascript
如何管理Vue中的缓存页面
Feb 06 Vue.js
超级有用的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
文章推荐系统(二)
2006/10/09 PHP
php获取后台Job管理的实现代码
2011/06/10 PHP
PHP日期函数date格式化UNIX时间的方法
2015/03/19 PHP
如何让动态插入的javascript脚本代码跑起来。
2007/01/09 Javascript
document.body.scrollTop 值总为0的解决方法 比较常见的标准问题
2009/11/30 Javascript
js中将URL中的参数提取出来作为对象的实现代码
2011/08/16 Javascript
javascript中对Attr(dom中属性)的操作示例讲解
2013/12/02 Javascript
AngularJS基础 ng-model 指令详解及示例代码
2016/08/02 Javascript
用js读写cookie的简单方法(推荐)
2016/08/08 Javascript
Bootstrap实现圆角、圆形头像和响应式图片
2016/12/14 Javascript
Vue props 单向数据流的实现
2018/11/06 Javascript
原生js+ajax分页组件
2020/01/30 Javascript
python正则表达式判断字符串是否是全部小写示例
2013/12/25 Python
python根据日期返回星期几的方法
2015/07/06 Python
Python 字符串与二进制串的相互转换示例
2018/07/23 Python
python使用zip将list转为json的方法
2018/12/31 Python
解决.ui文件生成的.py文件运行不出现界面的方法
2019/06/19 Python
Python实现某论坛自动签到功能
2019/08/20 Python
python编写计算器功能
2019/10/25 Python
4行Python代码生成图像验证码(2种)
2020/04/07 Python
python os模块常用的29种方法使用详解
2020/06/02 Python
Kathmandu美国网站:新西兰户外运动品牌
2019/03/23 全球购物
英国亚马逊官方网站:Amazon.co.uk
2019/08/09 全球购物
英国最好的包装供应商:Priory Direct
2019/12/17 全球购物
几道Web/Ajax的面试题
2016/11/05 面试题
网站编辑求职信
2013/10/17 职场文书
美术教学感言
2014/02/22 职场文书
电子工程专业毕业生求职信
2014/03/14 职场文书
湖南省党的群众路线教育实践活动总结会议新闻稿
2014/10/21 职场文书
2014年医德医风工作总结
2014/11/13 职场文书
学校百日安全活动总结
2015/05/07 职场文书
二十年同学聚会感言
2015/07/30 职场文书
新西兰:最新留学学习计划书写作指南
2019/07/15 职场文书
解决golang结构体tag编译错误的问题
2021/05/02 Golang
Python 批量下载阴阳师网站壁纸
2021/05/19 Python
vue使用echarts实现折线图
2022/03/21 Vue.js