JS字符串累加Array不一定比字符串累加快(根据电脑配置)


Posted in Javascript onMay 14, 2012

先贴出完整代码.

<script type="text/javascript"> 
function StringBuffer() { 
this._strings = new Array(); 
} 
StringBuffer.prototype.append = function(str) { 
this._strings.push(str); 
//StringBuffer.prototype.length = this._strings.length;//每多一行,就会多消耗处理时间 
var i = "asdfasdf"; 
} 
StringBuffer.prototype.toString = function() { 
this._strings.join(""); 
} 
/*String类 + 号累加*/ 
var d = new Date();//累加开始时间 
var str = "1"; 
for (var i = 0; i < 200; i++) { 
str += "ssss"; 
for (var i = 0; i < 30000; i++) { 
str += "text"; 
} 
} 
var d2 = new Date(); //累加结束时间 
document.write("+:"+(d2.getTime() - d.getTime()) + "milliseconds");//累加30000用时 
/*自定义StringBuffer类 字符串累加*/ 
d = new Date(); //StringBuffer开始时间 
var buffer = new StringBuffer(); 
for (var i = 0; i < 200; i++) { 
str += "ssss"; 
for (var i = 0; i < 30000; i++) { 
buffer.append("text"); 
} 
} 
var resultstr = buffer.toString(); 
d2 = new Date(); 
document.write("<br/>StringBuffer:" + (d2.getTime() - d.getTime()) + "milliseconds"); 
/*直接使用Array 不进行封装*/ 
d = new Date(); 
var arr = new Array(); 
for (var i = 0; i < 200; i++) { 
str += "ssss"; 
for (var i = 0; i < 30000; i++) { 
arr.push("text"); 
} 
} 
var resStr = arr.join(""); 
d2 = new Date(); 
document.write("<br/>Array:" + (d2.getTime() - d.getTime()) + "milliseconds"); 
</script> 
[code]

先说下我的机器配置 如图1:
JS字符串累加Array不一定比字符串累加快(根据电脑配置)

运行时间结果 如图2:
JS字符串累加Array不一定比字符串累加快(根据电脑配置)
在一台N老的机子上运行结果 如图3:
JS字符串累加Array不一定比字符串累加快(根据电脑配置)
上面一堆的代码和图可能乱了。总结如下:

机器配置较低时:“+”字符串拼接方式消耗时间明显高于Array 方式
机器配置较高时:“+”字符串拼接方式消耗时间可能会与Array方式持平。甚者会更短.

总结:为了保险起见。还是推荐使用Array 来进行字符串拼接操作.

Javascript 相关文章推荐
JavaScript 实现??打印?理
Apr 28 Javascript
AJAX的跨域与JSONP(为文章自动添加短址的功能)
Jan 17 Javascript
使用VS开发 Node.js指南
Jan 06 Javascript
jQuery实现瀑布流的取巧做法分享
Jan 12 Javascript
jQuery中noconflict函数的实现原理分解
Feb 03 Javascript
微信小程序 参数传递详解
Oct 24 Javascript
vue.js事件处理器是什么
Mar 20 Javascript
JS中的三个循环小结
Jun 20 Javascript
微信小程序 检查接口状态实例详解
Jun 23 Javascript
AngularJS $http post 传递参数数据的方法
Oct 09 Javascript
node.js实现上传文件功能
Jul 15 Javascript
vue+vant-UI框架实现购物车的复选框全选和反选功能
Nov 05 Javascript
JQuery 返回布尔值Is()条件判断方法代码
May 14 #Javascript
JQuery选择器特辑 详细小结
May 14 #Javascript
IE6背景图片不缓存问题解决方案及图片使用策略多个方法小结
May 14 #Javascript
js split 的用法和定义 js split分割字符串成数组的实例代码
May 13 #Javascript
jQuery循环滚动展示代码 可应用到文字和图片上
May 11 #Javascript
基于jQuery的公告无限循环滚动实现代码
May 11 #Javascript
javascript 事件处理、鼠标拖动效果实现方法详解
May 11 #Javascript
You might like
虫族 Zerg 魔法科技
2020/03/14 星际争霸
PHP5中Cookie与 Session使用详解
2013/04/30 PHP
php打开文件fopen函数的使用说明
2013/07/05 PHP
php获取网页请求状态程序示例
2014/06/17 PHP
如何修改Laravel中url()函数生成URL的根地址
2017/08/11 PHP
PHP+MySQL实现在线测试答题实例
2020/01/02 PHP
Javascript 事件流和事件绑定
2009/07/16 Javascript
jquery 应用代码 方便的排序功能
2010/02/06 Javascript
javascript与jquery中跳出循环的区别总结
2013/11/04 Javascript
当达到输入长度时表单自动切换焦点
2014/04/06 Javascript
jQuery层级选择器用法分析
2015/02/10 Javascript
nodejs事件的监听与触发的理解分析
2015/02/12 NodeJs
JavaScript中的splice()方法使用详解
2015/06/09 Javascript
实现非常简单的js双向数据绑定
2015/11/06 Javascript
详解JavaScript的表达式与运算符
2015/11/30 Javascript
jquery实现定时自动轮播特效
2015/12/10 Javascript
原生javascript实现自动更新的时间日期
2016/02/12 Javascript
Extjs实现下拉菜单效果
2016/04/01 Javascript
利用纯Vue.js构建Bootstrap组件
2016/11/03 Javascript
微信小程序 template模板详解及实例代码
2017/03/09 Javascript
jQuery插件HighCharts绘制2D柱状图、折线图和饼图的组合图效果示例【附demo源码下载】
2017/03/09 Javascript
jQuery实现下拉菜单动态添加数据点击滑出收起其他功能
2018/06/14 jQuery
解决vue中监听input只能输入数字及英文或者其他情况的问题
2018/08/30 Javascript
angular异步验证防抖踩坑实录
2019/12/01 Javascript
[49:20]2014 DOTA2国际邀请赛中国区预选赛5.21 CIS VS TongFu
2014/05/22 DOTA
python读写文件write和flush的实现方式
2020/02/21 Python
Python 忽略文件名编码的方法
2020/08/01 Python
Python extract及contains方法代码实例
2020/09/11 Python
GC是什么?为什么要有GC?
2013/12/08 面试题
最新英语专业学生求职信范文
2013/09/21 职场文书
大学生思想汇报范文
2013/12/31 职场文书
体育教师自我鉴定
2014/02/12 职场文书
双创工作实施方案
2014/03/26 职场文书
公司感谢信范文
2015/01/22 职场文书
2015年教务工作总结
2015/05/23 职场文书
如何用Navicat操作MySQL
2021/05/12 MySQL