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中(function(){})()执行顺序的理解
Mar 05 Javascript
Egret引擎开发指南之发布项目
Sep 03 Javascript
jQuery 1.9移除了$.browser可以使用$.support来替代
Sep 03 Javascript
JavaScript数组迭代器实例分析
Jun 09 Javascript
jQuery中serializeArray()与serialize()的区别实例分析
Dec 09 Javascript
原生js获取iframe中dom元素--父子页面相互获取对方dom元素的方法
Aug 05 Javascript
第一次接触神奇的Bootstrap
Oct 14 Javascript
基于jQuery实现Tabs选项卡自定义插件
Nov 21 Javascript
jQuery实现frame之间互通的方法
Jun 26 jQuery
BootStrap Table前台和后台分页对JSON格式的要求
Jun 28 Javascript
vue.js实例todoList项目
Jul 07 Javascript
Angular使用过滤器uppercase/lowercase实现字母大小写转换功能示例
Mar 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
Joomla下利用configuration.php存储简单数据
2010/05/19 PHP
PHP基于SMTP协议实现邮件发送实例代码
2017/04/27 PHP
通过JAVASCRIPT读取ASP设定的COOKIE
2007/02/15 Javascript
javascript静态的url如何传递
2007/05/03 Javascript
预加载css或javascript的js代码
2010/04/23 Javascript
javascript获取元素CSS样式代码示例
2013/11/28 Javascript
javascript基本包装类型介绍
2015/04/10 Javascript
jquery-tips悬浮提示插件分享
2015/07/31 Javascript
JavaScript观察者模式(publish/subscribe)原理与实现方法
2017/03/30 Javascript
详解vue.js全局组件和局部组件
2017/04/10 Javascript
React-router中结合webpack实现按需加载实例
2017/05/25 Javascript
JS移动端/H5同时选择多张图片上传并使用canvas压缩图片
2017/06/20 Javascript
vue-music关于Player播放器组件详解
2017/11/28 Javascript
JS删除数组里的某个元素方法
2018/02/03 Javascript
微信小程序顶部导航栏滑动tab效果
2019/01/28 Javascript
javascript 函数的暂停和恢复实例详解
2020/04/25 Javascript
如何利用javascript接收json信息并进行处理
2020/08/06 Javascript
[34:44]Liquid vs TNC Supermajor 胜者组 BO3 第二场 6.4
2018/06/05 DOTA
Python中return语句用法实例分析
2015/08/04 Python
关于Python中Inf与Nan的判断问题详解
2017/02/08 Python
Python实现八皇后问题示例代码
2018/12/09 Python
python2.7 安装pip的方法步骤(管用)
2019/05/05 Python
python进程和线程用法知识点总结
2019/05/28 Python
python通过TimedRotatingFileHandler按时间切割日志
2019/07/17 Python
Flask框架学习笔记之消息提示与异常处理操作详解
2019/08/15 Python
匡威帆布鞋美国官网:Converse美国
2016/08/22 全球购物
瑞士图书网站:Weltbild.ch
2019/09/17 全球购物
奥地利时尚、美容、玩具和家居之家:Kastner & Öhler
2020/04/26 全球购物
网络公司美工设计工作个人的自我评价
2013/11/03 职场文书
机电一体化专业推荐信
2013/12/03 职场文书
2014年公司迎新年活动方案
2014/02/24 职场文书
保险公司年会主持词
2014/03/22 职场文书
企业与个人合作经营协议书
2014/11/01 职场文书
同学聚会通知书
2015/04/20 职场文书
高老头读书笔记
2015/06/30 职场文书
董事长新年致辞
2015/07/29 职场文书