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 迁移目录
Dec 18 Javascript
如何将JS的变量值传递给ASP变量
Dec 10 Javascript
jquery 字符串切割函数substring的用法说明
Feb 11 Javascript
jQuery产品间断向下滚动效果核心代码
May 08 Javascript
在JS数组特定索引处指定位置插入元素
Jul 27 Javascript
jQuery删除节点用法示例(remove方法)
Sep 08 Javascript
JavaScript每天必学之事件
Sep 18 Javascript
详解react关于事件绑定this的四种方式
Mar 09 Javascript
基于iScroll实现内容滚动效果
Mar 21 Javascript
解决Vue-cli npm run build生产环境打包,本地不能打开的问题
Sep 20 Javascript
vue 取出v-for循环中的index值实例
Nov 09 Javascript
jQuery是用来干什么的 jquery其实就是一个js框架
Feb 04 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
提问的智慧(2)
2006/10/09 PHP
php curl模拟post请求和提交多维数组的示例代码
2015/11/19 PHP
PHP mysqli_free_result()与mysqli_fetch_array()函数详解
2016/09/21 PHP
mapper--图片热点区域高亮组件官方站点
2007/12/22 Javascript
JavaScript 三种创建对象的方法
2009/10/16 Javascript
HTML,CSS,JavaScript速查表推荐
2014/12/02 Javascript
设置jquery UI 控件的大小方法
2016/12/12 Javascript
基于angular实现三级联动的生日插件
2017/05/12 Javascript
在vue中使用css modules替代scroped的方法
2018/03/10 Javascript
浅谈vue项目可以从哪些方面进行优化
2018/05/05 Javascript
React Form组件的实现封装杂谈
2018/05/07 Javascript
JavaScript数据结构之栈实例用法
2019/01/18 Javascript
Vue注册组件命名时不能用大写的原因浅析
2019/04/25 Javascript
django中使用vue.js的要点总结
2019/07/07 Javascript
基于vue和websocket的多人在线聊天室
2020/02/01 Javascript
python在多玩图片上下载妹子图的实现代码
2013/08/13 Python
python3解析库BeautifulSoup4的安装配置与基本用法
2018/06/26 Python
python绘制热力图heatmap
2020/03/23 Python
Pyinstaller打包.py生成.exe的方法和报错总结
2019/04/02 Python
使用Django开发简单接口实现文章增删改查
2019/05/09 Python
python-Web-flask-视图内容和模板知识点西宁街
2019/08/23 Python
Python操作Sqlite正确实现方法解析
2020/02/05 Python
你应该知道的Python3.6、3.7、3.8新特性小结
2020/05/12 Python
python 多线程爬取壁纸网站的示例
2021/02/20 Python
台湾全方位线上课程与职能学习平台:TibaMe
2019/12/04 全球购物
Optimalprint加拿大:在线打印服务
2020/04/03 全球购物
公司人力资源的自我评价
2014/01/02 职场文书
幼儿园中班下学期评语
2014/04/18 职场文书
旅游节目策划方案
2014/05/26 职场文书
小型婚礼主持词
2015/06/30 职场文书
2016年幼儿园教师政治学习心得体会
2016/01/23 职场文书
深入浅析React中diff算法
2021/05/19 Javascript
Django操作cookie的实现
2021/05/26 Python
Python中time标准库的使用教程
2022/04/13 Python
详解OpenCV曝光融合
2022/04/29 Python
CSS 实现角标效果的完整代码
2022/06/28 HTML / CSS