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 相关文章推荐
获取任意Html元素与body之间的偏移距离 offsetTop、offsetLeft (For:IE5+ FF1 )[
Dec 22 Javascript
javaScript基础语法介绍
Feb 28 Javascript
Node.js模块封装及使用方法
Mar 06 Javascript
全面了解javascript中的错误处理机制
Jul 18 Javascript
ReactJs快速入门教程(精华版)
Nov 28 Javascript
jQuery Pagination分页插件_动力节点Java学院整理
Jul 17 jQuery
Vue2.0实现组件数据的双向绑定问题
Mar 06 Javascript
JavaScript常见继承模式实例小结
Jan 11 Javascript
[jQuery] 事件和动画详解
Mar 05 jQuery
详解JavaScript函数callee、call、apply的区别
Mar 08 Javascript
基于vue-cli、elementUI的Vue超简单入门小例子(推荐)
Apr 17 Javascript
js实现随机点名器精简版
Jun 29 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
PHP生成带有雪花背景的验证码
2006/10/09 PHP
珊瑚虫IP库浅析
2007/02/15 PHP
php开发环境配置记录
2011/01/14 PHP
php批量删除超链接的实现方法
2015/10/19 PHP
PHP实现的文件操作类及文件下载功能示例
2016/12/24 PHP
使用Git实现Laravel项目的自动化部署
2019/11/24 PHP
PHP 实现缩略图
2021/03/09 PHP
Javascript实例教程(19) 使用HoTMetal(6)
2006/12/23 Javascript
jQuery 跨域访问问题解决方法
2009/12/02 Javascript
50款非常棒的 jQuery 插件分享
2012/03/29 Javascript
收集json解析的四种方法分享
2014/01/17 Javascript
页面元素绑定jquery toggle后元素隐藏的解决方法
2014/03/27 Javascript
textarea焦点的用法实现获取焦点清空失去焦点提示效果
2014/05/19 Javascript
nodejs批量修改文件编码格式
2015/01/22 NodeJs
jQuery使用addClass()方法给元素添加多个class样式
2015/03/26 Javascript
JQuery实现级联下拉框效果实例讲解
2015/09/17 Javascript
JQuery EasyUI的使用
2016/02/24 Javascript
关于JS中setTimeout()无法调用带参函数问题的解决方法
2016/06/21 Javascript
vue组件间通信子与父详解(二)
2017/11/07 Javascript
微信小程序基于高德地图查找位置并显示文字
2019/10/30 Javascript
python脚本实现xls(xlsx)转成csv
2016/04/10 Python
python爬虫基本知识
2018/03/05 Python
Window环境下Scrapy开发环境搭建
2018/11/18 Python
python 使用while写猜年龄小游戏过程解析
2019/10/07 Python
一文轻松掌握python语言命名规范规则
2020/06/18 Python
会计电算化专业应届大学生求职信
2013/10/22 职场文书
医药营销个人求职信范文
2014/02/07 职场文书
八年级语文教学反思
2014/02/11 职场文书
高中生职业规划范文
2014/03/09 职场文书
吨的认识教学反思
2014/04/27 职场文书
3分钟演讲稿
2014/04/30 职场文书
三年级班级文化建设方案
2014/05/04 职场文书
岁月神偷观后感
2015/06/11 职场文书
投诉信范文
2015/07/02 职场文书
MySQL派生表联表查询实战过程
2022/03/20 MySQL
SpringBoot全局异常处理方案分享
2022/05/25 Java/Android