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 22 Javascript
jquery 插件学习(六)
Aug 06 Javascript
Blocksit插件实现瀑布流数据无限( 异步)加载
Jun 20 Javascript
SeaJS 与 RequireJS 的差异对比
Dec 08 Javascript
JQuery ztree 异步加载实例讲解
Feb 25 Javascript
fullpage.js全屏滚动插件使用实例
Sep 06 Javascript
vue移动端裁剪图片结合插件Cropper的使用实例代码
Jul 10 Javascript
深入理解ES6 Promise 扩展always方法
Sep 26 Javascript
JavaScript Math对象和调试程序的方法分析
May 13 Javascript
vue+element创建动态的form表单及动态生成表格的行和列
May 20 Javascript
webpack自动打包和热更新的实现方法
Jun 24 Javascript
js prototype和__proto__的关系是什么
Aug 23 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
yii2.0实现创建简单widgets示例
2016/07/18 PHP
PHP中in_array函数使用的问题与解决办法
2016/09/11 PHP
php中array_slice和array_splice函数解析
2016/10/18 PHP
Yii框架响应组件用法实例分析
2019/09/04 PHP
动态控制Table的js代码
2007/03/07 Javascript
javascript 得到变量类型的函数
2010/05/19 Javascript
Web Inspector:关于在 Sublime Text 中调试Js的介绍
2013/04/18 Javascript
jquery自定义类似$.ajax()的方法实现代码
2013/08/13 Javascript
nodeType属性返回被选节点的节点类型介绍
2013/11/22 Javascript
关于JavaScript对象的动态选择及遍历对象
2014/03/10 Javascript
详解JS函数重载
2014/12/04 Javascript
JS实现带有3D立体感的银灰色竖排折叠菜单代码
2015/10/20 Javascript
理解javascript对象继承
2016/04/17 Javascript
jQuery中的each()详细介绍(推荐)
2016/05/25 Javascript
如何在Angular2中使用jQuery及其插件的方法
2017/02/09 Javascript
详谈innerHTML innerText的使用和区别
2017/08/18 Javascript
vue添加class样式实例讲解
2019/02/12 Javascript
JS实现纵向轮播图(初级版)
2020/01/18 Javascript
vue 中this.$set 动态绑定数据的案例讲解
2021/01/29 Vue.js
[02:40]DOTA2殁境神蚀者 英雄基础教程
2013/11/26 DOTA
python新手经常遇到的17个错误分析
2014/07/30 Python
python 常见字符串与函数的用法详解
2018/11/23 Python
对Python3 序列解包详解
2019/02/16 Python
python实现人工智能Ai抠图功能
2019/09/05 Python
Python脚本如何在bilibili中查找弹幕发送者
2020/06/04 Python
值得收藏的HTML5资源(学习html5的朋友可以收藏下)
2010/07/20 HTML / CSS
美国最大的网上冲印店:Shutterfly
2017/01/01 全球购物
法院实习人员自我鉴定
2013/09/26 职场文书
秋季运动会通讯稿
2014/01/24 职场文书
征婚广告词
2014/03/17 职场文书
干部对照检查材料范文
2014/08/26 职场文书
工作岗位职责范本
2015/02/15 职场文书
门面租赁合同范文
2019/08/06 职场文书
MySQL 隔离数据列和前缀索引的使用总结
2021/05/14 MySQL
Linux安装apache服务器的配置过程
2021/11/27 Servers
Lakehouse数据湖并发控制陷阱分析
2022/03/31 Oracle