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 相关文章推荐
js 单引号 传递方法
Jun 22 Javascript
在模板页面的js使用办法
Apr 01 Javascript
Javascript实现滑块滑动改变值的实现代码
Apr 12 Javascript
javascript使用location.search的示例
Nov 05 Javascript
动态添加option及createElement使用示例
Jan 26 Javascript
javascript感应鼠标图片透明度显示的方法
Feb 24 Javascript
jQuery插件Validate实现自定义校验结果样式
Jan 18 Javascript
layer弹窗插件操作方法详解
May 19 Javascript
ECMAscript 变量作用域总结概括
Aug 18 Javascript
vue+render+jsx实现可编辑动态多级表头table的实例代码
Apr 01 Javascript
Vue使用富文本编辑器Vue-Quill-Editor(含图片自定义上传服务、清除复制粘贴样式等)
May 15 Javascript
解决vue项目运行npm run serve报错的问题
Oct 26 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
收集的DedeCMS一些使用经验
2007/03/17 PHP
PHP中的string类型使用说明
2010/07/27 PHP
不重新编译PHP为php增加openssl模块的方法
2011/06/14 PHP
PHP-Java-Bridge使用笔记
2014/09/22 PHP
两千行代码的PHP学习笔记汇总
2014/10/05 PHP
PHP微信支付开发实例
2016/06/22 PHP
基于PHP实现发微博动态代码实例
2020/12/11 PHP
jquery 框架使用教程 AJAX篇
2009/10/11 Javascript
特殊情况下如何获取span里面的值
2014/05/20 Javascript
Javascript基础知识(二)事件
2014/09/29 Javascript
jQuery.trim() 函数及trim()用法详解
2015/10/26 Javascript
今天抽时间给大家整理jquery和ajax的相关知识
2015/11/17 Javascript
input输入密码变黑点密文的实现方法
2017/01/09 Javascript
微信小程序 数据交互与渲染实例详解
2017/01/21 Javascript
详解Vue学习笔记进阶篇之列表过渡及其他
2017/07/17 Javascript
JavaScript实现栈结构Stack过程详解
2020/03/07 Javascript
五句话帮你轻松搞定js原型链
2020/12/09 Javascript
python socket 超时设置 errno 10054
2014/07/01 Python
Python实现将绝对URL替换成相对URL的方法
2015/06/28 Python
详解Django中类视图使用装饰器的方式
2018/08/12 Python
Python 实现数据结构中的的栈队列
2019/05/16 Python
Python自动抢红包教程详解
2019/06/11 Python
浅谈Python 递归算法指归
2019/08/22 Python
python打包成so文件过程解析
2019/09/28 Python
Numpy中对向量、矩阵的使用详解
2019/10/29 Python
Python实现非正太分布的异常值检测方式
2019/12/09 Python
利用Python脚本实现自动刷网课
2020/02/03 Python
Python requests接口测试实现代码
2020/09/08 Python
如何使用python-opencv批量生成带噪点噪线的数字验证码
2020/12/21 Python
Grid 宫格常用布局的实现
2020/01/10 HTML / CSS
英国标志性生活方式品牌:Skinnydip London
2019/12/15 全球购物
高中运动会广播稿
2014/09/16 职场文书
2015年度员工自我评价范文
2015/03/11 职场文书
党支部季度考核意见
2015/06/02 职场文书
mysql查询的控制语句图文详解
2021/04/11 MySQL
OpenCV-Python使用cv2实现傅里叶变换
2021/06/09 Python