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访问样式表代码
Oct 15 Javascript
jQuery中filter()和find()的区别深入了解
Sep 25 Javascript
在JavaScript中处理时间之setMinutes()方法的使用
Jun 11 Javascript
JavaScript的this关键字的理解
Jun 18 Javascript
JS实现将Asp.Net的DateTime Json类型转换为标准时间的方法
Aug 02 Javascript
微信小程序 wx.uploadFile无法上传解决办法
Dec 14 Javascript
angularjs+bootstrap实现自定义分页的实例代码
Jun 19 Javascript
总结js中的一些兼容性易错的问题
Dec 18 Javascript
vue二级路由设置方法
Feb 09 Javascript
javascript实现小型区块链功能
Apr 03 Javascript
layui实现二维码弹窗、并下载到本地的方法
Sep 25 Javascript
js判断复选框是否选中的方法示例【基于jQuery】
Oct 10 jQuery
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
php读取3389的脚本
2014/05/06 PHP
php中get_object_vars()方法用法实例
2015/02/08 PHP
PHP 5.6.11 访问SQL Server2008R2的几种情况详解
2016/08/08 PHP
JS 实现Table相同行的单元格自动合并示例代码
2013/08/27 Javascript
JS方法调用括号的问题探讨
2014/01/24 Javascript
jquery、js调用iframe父窗口与子窗口元素的方法整理
2014/07/31 Javascript
js实现鼠标点击左上角滑动菜单效果代码
2015/09/06 Javascript
Jquery 1.9.1源码分析系列(十二)之筛选操作
2015/12/02 Javascript
jQuery使用模式窗口实现在主页面和子页面中互相传值的方法
2016/03/01 Javascript
BootStrap实现响应式布局导航栏折叠隐藏效果(在小屏幕、手机屏幕浏览时自动折叠隐藏)
2016/11/30 Javascript
AngularJS基于ui-route实现深层路由的方法【路由嵌套】
2016/12/14 Javascript
jQuery实现select模糊查询(反射机制)
2017/01/14 Javascript
php 修改密码实现代码
2017/05/24 Javascript
自定义类似于jQuery UI Selectable 的Vue指令v-selectable
2017/08/23 jQuery
浅谈vue首屏加载优化
2018/06/28 Javascript
前后端如何实现登录token拦截校验详解
2018/09/03 Javascript
JavaScript 高性能数组去重的方法
2018/09/20 Javascript
微信小程序使用npm支持踩坑
2018/11/07 Javascript
JS双向链表实现与使用方法示例(增加一个previous属性实现)
2019/01/31 Javascript
vue路由 遍历生成复数router-link的例子
2019/10/30 Javascript
如何在node环境实现“get数据解析”代码实例
2020/07/03 Javascript
vue 微信分享回调iOS和安卓回调出现错误的解决
2020/09/07 Javascript
JavaScript this关键字的深入详解
2021/01/14 Javascript
[01:19:54]DOTA2上海特级锦标赛主赛事日 - 2 败者组第二轮#1Alliance VS EHOME
2016/03/03 DOTA
Python 实现12306登录功能实例代码
2018/02/09 Python
Python实现简单的列表冒泡排序和反转列表操作示例
2019/07/10 Python
Python 格式化打印json数据方法(展开状态)
2020/02/27 Python
python二维图制作的实例代码
2020/12/03 Python
网络工程专业毕业生推荐信
2013/10/28 职场文书
四风查摆问题及整改措施
2014/10/10 职场文书
党员批评与自我批评总结
2014/10/15 职场文书
中层干部考核评语
2015/01/04 职场文书
慰问信模板
2015/02/14 职场文书
客户答谢会致辞
2015/07/30 职场文书
python基础之停用词过滤详解
2021/04/21 Python