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 相关文章推荐
HTML中Select不用Disabled实现ReadOnly的效果
Apr 07 Javascript
Firefox下提示illegal character并出现乱码的原因
Mar 25 Javascript
简单漂亮的js弹窗可自由拖拽且兼容大部分浏览器
Oct 22 Javascript
javascript实现简单的二级联动
Mar 19 Javascript
Javascript页面跳转常见实现方式汇总
Nov 28 Javascript
jQuery给元素添加样式的方法详解
Dec 30 Javascript
Javascript将双字节字符转换成单字节字符并计算长度
Jun 22 Javascript
JavaScript html5利用FileReader实现上传功能
Mar 27 Javascript
详解webpack自动生成html页面
Jun 29 Javascript
详解vue 模版组件的三种用法
Jul 21 Javascript
bootstrap轮播模板使用方法详解
Nov 17 Javascript
不到200行 JavaScript 代码实现富文本编辑器的方法
Jan 03 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控制用户的浏览器--ob*函数的使用说明
2007/03/16 PHP
PHP以指定字段为索引返回数据库所取的数据数组
2013/06/30 PHP
PHP创建PowerPoint2007文档的方法
2015/12/10 PHP
Laravel中使用Queue的最基本操作教程
2017/12/27 PHP
JavaScript Object的extend是一个常用的功能
2009/12/02 Javascript
jQueryUI的Dialog的简单封装
2010/06/07 Javascript
firefox下input type=&quot;file&quot;的size是多大
2011/10/24 Javascript
JS生成不重复随机数组的函数代码
2014/06/10 Javascript
javascript查询字符串参数的方法
2015/01/28 Javascript
jquery插件splitScren实现页面分屏切换模板特效
2015/06/16 Javascript
利用JS轻松实现获取表单数据
2016/12/06 Javascript
基于bootstrap按钮式下拉菜单组件的搜索建议插件
2017/03/25 Javascript
jquery处理checkbox(复选框)是否被选中实例代码
2017/06/12 jQuery
浅谈通过JS拦截 pushState和replaceState事件
2017/07/21 Javascript
js中less常用的方法小结
2017/08/09 Javascript
JS中图片压缩的方法小结
2017/11/14 Javascript
bootstrap-table实现表头固定以及列固定的方法示例
2019/03/07 Javascript
vue多层嵌套路由实例分析
2019/03/19 Javascript
IE11下CKEditor在Bootstrap Modal中下拉问题的解决
2019/09/25 Javascript
vue设置全局访问接口API地址操作
2020/08/14 Javascript
Python实现统计英文单词个数及字符串分割代码
2015/05/28 Python
对Python3+gdal 读取tiff格式数据的实例讲解
2018/12/04 Python
在python中计算ssim的方法(与Matlab结果一致)
2019/12/19 Python
pytorch 自定义参数不更新方式
2020/01/06 Python
关于python pycharm中输出的内容不全的解决办法
2020/01/10 Python
matplotlib quiver箭图绘制案例
2020/04/17 Python
台湾东南旅游社网站:东南旅游
2019/02/11 全球购物
介绍一下EJB的分类及其各自的功能及应用
2016/08/23 面试题
创业计划书六个要素
2013/12/26 职场文书
消防器材管理制度
2014/01/28 职场文书
行政专员的岗位职责
2014/03/10 职场文书
机关办公室岗位职责
2014/04/16 职场文书
培训协议书范本
2014/04/22 职场文书
学生偷窃检讨书
2014/09/25 职场文书
2014年银行员工工作总结
2014/11/12 职场文书
淘宝文案策划岗位职责
2015/04/14 职场文书