Javascript三种字符串连接方式及性能比较


Posted in Javascript onMay 28, 2019

第一种:用连接符“+”连接字符串

str="a";
str+="b";

这种方法相对以下两种,最便捷快速。建议100字符以下的连接使用这种连接方式。

第二种:以数组作为中介,使用jion函数进行连接

var arr=new Array();
arr.push(a);
arr.push(b);
var str=arr.join("");

第三种:利用对象属性连接字符串

function stringConnect(){
  this._str_=new Array();
}
stringConnect.prototype.append=function(a){
  this._str_.push(a);
}
stringConnect.prototype.toString=function(){
  return this._str_.join();
}
  var mystr=new stringConnect;
  mystr.append("a");
  var str=mystr.toString();

利用下面代码对三种方法性能进行比较,通过更改 c 的值来调整连接字符串的个数:

var str="";
var d1,d2;
var c=5000;//连接字符串的个数
//------------------------测试第三种方法耗费时间-------
 d1=new Date();
function stringConnect(){
  this._str_=new Array();
}
stringConnect.prototype.append=function(a){
  this._str_.push(a);
}
stringConnect.prototype.toString=function(){
  return this._str_.join("");
}
  var mystr=new stringConnect;

  for(var i=0;i<c;i++){
    mystr.append("a");
  }
str=mystr.toString();
 d2=new Date();
 console.log(d2.getTime()-d1.getTime());
//-----------------------------------------------------

//------------------------测试第二种方法耗费时间-------
d1=new Date();
  var arr=new Array();
for(var i=0;i<c;i++){
  arr.push("a");
}
str=arr.join("");
  d2=new Date();
console.log(d2.getTime()-d1.getTime());
//-------------------------------------------------------
//------------------------测试第一种方法耗费时间-------
d1=new Date();for(var i=0;i<c;i++){
  str+="a";
}
d2=new Date();
console.log(d2.getTime()-d1.getTime());
//-------------------------------------------------------

我调整 c 分别等于5000、50000、500000、5000000,每个数值分别测了10次,最后结果如下:

c=5000
                                                                             平均耗时(单位毫秒)

第三种   3   2   2   3   1   2  2  1   1   1                              1.8
第二种   1   3   0   3   1   3  4  1   4   2                              2.2
第一种   0   0   0   0   0   1  1  1   1   1                              0.5

c=50000

第三种   22  12     9   14    12   13   13   13   10   17          13.5
第二种   8    13   12     8    11   11     8     9     8    9          9.7
第一种   7    12     5    11   10   10   10    13   16  12          10.6

c=500000

第三种 104 70 74 69 76 77 69 102 73 73                            78.7
第二种 78 100 99 99 100 98 96 71 94 97                             93.2
第一种 90 87 83 85 85 83 84 83 88 86                                 85.4

c=5000000

第三种 651 871 465 444 1012 436 787 449 432 444             599.1
第二种 568 842 593 747 417 747 719 549 573 563               631.8
第一种 516 279 616 161 466 416 201 495 510 515               417.5

统计5000000的时候在地址栏加入了随机参数,应该是避免了缓存的影响的。从结果来看,第一种方法并不比另2种方法消耗多,甚至还更有优势,这点和手册上的说明明显不一致。

测试系统:win 7旗舰

浏览器:chrome 52.0.2739.0 m

总结

以上所述是小编给大家介绍的Javascript三种字符串连接方式及性能比较,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
javascript firefox不显示本地预览图片问题的解决方法
Nov 12 Javascript
学习ExtJS 访问容器对象
Oct 07 Javascript
jqeury eval将字符串转换json的方法
Jan 20 Javascript
jQuery实现DIV层淡入淡出拖动特效的方法
Feb 13 Javascript
使用jQuery实现更改默认alert框体
Apr 13 Javascript
jQuery Validation PlugIn的使用方法详解
Dec 18 Javascript
JS随机洗牌算法之数组随机排序
Mar 23 Javascript
BootStrap Datetimepicker 汉化的实现代码
Feb 10 Javascript
js中new一个对象的过程
Feb 20 Javascript
jQuery实现的动态文字变化输出效果示例【附演示与demo源码下载】
Mar 24 jQuery
antd组件Upload实现自己上传的实现示例
Dec 18 Javascript
你准备好迎接vue3.0了吗
Apr 28 Javascript
vue+element实现表格新增、编辑、删除功能
May 28 #Javascript
Vue实现表格批量审核功能实例代码
May 28 #Javascript
vue+Element实现搜索关键字高亮功能
May 28 #Javascript
vue input输入框关键字筛选检索列表数据展示
Oct 26 #Javascript
vue+elementUI实现表格关键字筛选高亮
Oct 26 #Javascript
Django+Vue实现WebSocket连接的示例代码
May 28 #Javascript
Vue3.0结合bootstrap创建多页面应用
May 28 #Javascript
You might like
初步介绍PHP扩展开发经验分享
2012/09/06 PHP
删除PHP数组中头部、尾部、任意元素的实现代码
2017/04/10 PHP
Nodejs实现多人同时在线移动鼠标的小游戏分享
2014/12/06 NodeJs
JavaScript中的值类型转换介绍
2014/12/31 Javascript
jquery中trigger()无法触发hover事件的解决方法
2015/05/07 Javascript
使用AngularJS创建自定义的过滤器的方法
2015/06/18 Javascript
jQuery代码实现实时获取时间
2017/01/29 Javascript
微信小程序 跳转传参数与传对象详解及实例代码
2017/03/14 Javascript
JS检测window.open打开的窗口是否关闭
2017/06/25 Javascript
详解Webpack DLL用法以及功能
2017/07/11 Javascript
基于react后端渲染模板引擎noox发布使用
2018/01/11 Javascript
Vue指令之 v-cloak、v-text、v-html实例详解
2019/08/08 Javascript
NodeJS 文件夹拷贝以及删除功能
2019/09/03 NodeJs
[42:06]2019国际邀请赛全明星赛 8.23
2019/09/05 DOTA
仅利用30行Python代码来展示X算法
2015/04/01 Python
Python 包含汉字的文件读写之每行末尾加上特定字符
2016/12/12 Python
Python3 XML 获取雅虎天气的实现方法
2018/02/01 Python
python使用生成器实现可迭代对象
2018/03/20 Python
Python实现修改文件内容的方法分析
2018/03/25 Python
Python3标准库总结
2019/02/19 Python
让Python脚本暂停执行的几种方法(小结)
2019/07/11 Python
Python3 执行Linux Bash命令的方法
2019/07/12 Python
Python检查图片是否损坏及图片类型是否正确过程详解
2019/09/30 Python
Tensorflow: 从checkpoint文件中读取tensor方式
2020/02/10 Python
python re模块匹配贪婪和非贪婪模式详解
2020/02/11 Python
python学习将数据写入文件并保存方法
2020/06/07 Python
Jack Rogers官网:美国经典的女性鞋靴品牌
2019/09/04 全球购物
Ben Sherman官方网站:英国男装品牌
2019/10/22 全球购物
Linux如何修改文件和文件夹的权限
2012/06/27 面试题
财务部经理岗位职责
2014/02/03 职场文书
中餐厅主管的职责范文
2014/02/04 职场文书
小学生国旗下演讲稿
2014/04/25 职场文书
工商行政管理专业求职书
2014/05/23 职场文书
2015年党员干部承诺书
2015/01/21 职场文书
2015年学校后勤工作总结
2015/04/08 职场文书
党务工作者主要事迹材料
2015/11/03 职场文书