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使用cookie
Feb 02 Javascript
js实现的网站首页随机公告随机公告
Mar 14 Javascript
js中字符替换函数String.replace()使用技巧
Aug 14 Javascript
解析jquery中的ajax缓存问题
Dec 19 Javascript
jQuery实现的给图片点赞+1动画效果(附在线演示及demo源码下载)
Dec 31 Javascript
详解React-Todos入门例子
Nov 08 Javascript
VUE JS 使用组件实现双向绑定的示例代码
Jan 10 Javascript
layui文件上传实现代码
May 20 Javascript
JS实现数组简单去重及数组根据对象中的元素去重操作示例
Jan 05 Javascript
基于JS实现一个随机生成验证码功能
May 29 Javascript
Vue切换组件实现返回后不重置数据,保留历史设置操作
Jul 21 Javascript
Vue(定时器)解决mounted不能获取到data中的数据问题
Jul 30 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图片验证码代码
2008/03/27 PHP
PHP实现在线阅读PDF文件的方法
2015/06/17 PHP
PHP控制反转(IOC)和依赖注入(DI)
2017/03/13 PHP
PHP7生产环境队列Beanstalkd用法详解
2020/05/19 PHP
基于jQuery的一个扩展form序列化到json对象
2010/12/09 Javascript
javascript 闭包疑问
2010/12/30 Javascript
JQuery中对服务器控件 DropdownList, RadioButtonList, CheckboxList的操作总结
2011/06/28 Javascript
jQuery实现三级菜单的代码
2016/05/09 Javascript
实例详解JavaScript中setTimeout函数的执行顺序
2017/07/12 Javascript
mui 打开新窗口的方式总结及注意事项
2017/08/20 Javascript
基于js中document.cookie全面解析
2017/09/14 Javascript
vue+iview写个弹框的示例代码
2017/12/05 Javascript
jQuery实现图片上传预览效果功能完整实例【测试可用】
2018/05/28 jQuery
vue项目实现github在线预览功能
2018/06/20 Javascript
详解关于Angular4 ng-zorro使用过程中遇到的问题
2018/12/05 Javascript
史上最为详细的javascript继承(推荐)
2019/05/18 Javascript
Django中实现一个高性能计数器(Counter)实例
2014/07/09 Python
在Docker上部署Python的Flask框架的教程
2015/04/08 Python
pymongo实现多结果进行多列排序的方法
2015/05/16 Python
python抓取文件夹的所有文件
2018/02/27 Python
Sanic框架流式传输操作示例
2018/07/18 Python
pycharm中import呈现灰色原因的解决方法
2020/03/04 Python
python实现二分查找算法
2020/09/18 Python
如何利用Python matplotlib绘制雷达图
2020/12/21 Python
突袭HTML5之Javascript API扩展3—本地存储全新体验
2013/01/31 HTML / CSS
html5表单及新增的改良元素详解
2016/06/07 HTML / CSS
Priority Pass机场贵宾室会籍计划:全球超过1200间机场贵宾室
2018/08/26 全球购物
最畅销的视频游戏享受高达90%的折扣:CDKeys
2020/02/10 全球购物
西班牙在线药店:DosFarma
2020/03/28 全球购物
公司财务总监岗位职责
2013/12/14 职场文书
工作态度检讨书
2014/02/11 职场文书
2015年国庆节活动总结
2015/03/23 职场文书
2015年市场部工作总结
2015/04/30 职场文书
读书笔记格式
2015/07/02 职场文书
运动会跳远广播稿
2015/08/19 职场文书
深入理解Vue的数据响应式
2021/05/15 Vue.js