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 相关文章推荐
枚举的实现求得1-1000所有出现1的数字并计算出现1的个数
Sep 10 Javascript
查看大图功能代码jquery版
Nov 05 Javascript
jQuery响应enter键的实现思路
Apr 18 Javascript
jQuery form插件之ajaxForm()和ajaxSubmit()的可选参数项对象
Jan 23 Javascript
js实现楼层效果的简单实例
Jul 15 Javascript
BOM系列第三篇之定时器应用(时钟、倒计时、秒表和闹钟)
Aug 17 Javascript
简单谈谈React中的路由系统
Jul 25 Javascript
利用Bootstrap Multiselect实现下拉框多选功能
Apr 08 Javascript
IntelliJ IDEA编辑器配置vue高亮显示
Sep 26 Javascript
taro 实现购物车逻辑的实例代码
Jun 05 Javascript
基于jquery实现彩色投票进度条代码解析
Aug 26 jQuery
JS实现拖拽元素时与另一元素碰撞检测
Aug 27 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
destoon数据库表说明汇总
2014/07/15 PHP
百万级别知乎用户数据抓取与分析之PHP开发
2015/09/28 PHP
PHP表单提交后引号前自动加反斜杠的原因及三种办法关闭php魔术引号
2015/09/30 PHP
php 多文件上传的实现实例
2016/10/23 PHP
JavaScript监测ActiveX控件是否已经安装过的代码
2008/09/02 Javascript
JavaScript 字符串乘法
2009/08/20 Javascript
游览器中javascript的执行过程(图文)
2012/05/20 Javascript
jQuery 1.7.2中getAll方法的疑惑分析
2012/05/23 Javascript
jquery左右滚动焦点图banner图片鼠标经过显示上下页按钮
2013/10/11 Javascript
JavaScript 学习笔记之变量及其作用域
2015/01/14 Javascript
JavaScript实现自动生成网页元素功能(按钮、文本等)
2015/11/21 Javascript
Bootstrap学习笔记之js组件(4)
2016/06/12 Javascript
vue图片加载与显示默认图片实例代码
2017/03/16 Javascript
jQuery复合事件结合toggle()方法的用法示例
2017/06/10 jQuery
angular的输入和输出的使用方法
2018/09/22 Javascript
微信小程序跳转到其他网页(外部链接)的实现方法
2019/09/20 Javascript
JS中的模糊查询功能
2019/12/08 Javascript
js实现车辆管理系统
2020/08/26 Javascript
浅谈python中截取字符函数strip,lstrip,rstrip
2015/07/17 Python
python连接mysql实例分享
2016/10/09 Python
使用Python实现简单的服务器功能
2017/08/25 Python
python数据结构之线性表的顺序存储结构
2018/09/28 Python
Python中numpy模块常见用法demo实例小结
2019/03/16 Python
python:按行读入,排序然后输出的方法
2019/07/20 Python
对python中的float除法和整除法的实例详解
2019/07/20 Python
tensorflow -gpu安装方法(不用自己装cuda,cdnn)
2020/01/20 Python
Python 爬虫批量爬取网页图片保存到本地的实现代码
2020/12/24 Python
Python爬虫实例之2021猫眼票房字体加密反爬策略(粗略版)
2021/02/22 Python
iHerb中文官网:维生素、保健品和健康产品
2018/11/01 全球购物
下述程序的作用是计算机数组中的最大元素值及其下标
2012/11/26 面试题
幼师自我鉴定范文
2013/10/01 职场文书
机电一体化专业应届生求职信
2013/11/27 职场文书
网上书店创业计划书
2014/01/12 职场文书
小学生法制教育心得体会
2016/01/14 职场文书
2016年社区六一儿童节活动总结
2016/04/06 职场文书
JavaWeb实现显示mysql数据库数据
2022/03/19 Java/Android