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 For Beginners(转载)
Jan 05 Javascript
jQuery 行背景颜色的交替显示(隔行变色)实现代码
Dec 13 Javascript
JSQL SQLProxy 的 php 版本代码
May 05 Javascript
jquery实现动态菜单的实例代码
Nov 28 Javascript
用javascript对一个json数组深度赋值示例
Jul 27 Javascript
原生javascript实现的分页插件pagenav
Aug 28 Javascript
谈谈JavaScript中浏览器兼容问题的写法小议
Dec 17 Javascript
touch.js 拖动、缩放、旋转 (鼠标手势)功能代码
Feb 04 Javascript
angularJs的ng-class切换class
Jun 23 Javascript
mockjs+vue页面直接展示数据的方法
Dec 19 Javascript
JS立即执行的匿名函数用法分析
Nov 04 Javascript
js删除对象中的某一个字段的方法实现
Jan 11 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异步调用socket实现代码
2012/01/12 PHP
destoon实现调用图文新闻的方法
2014/08/21 PHP
php使用指定编码导出mysql数据到csv文件的方法
2015/03/31 PHP
php.ini中的request_order推荐设置
2015/05/10 PHP
laravel实现上传图片,并且制作缩略图,按照日期存放的代码
2019/10/16 PHP
彪哥1.1(智能表格)提供下载
2006/09/07 Javascript
拥抱模块化的JavaScript
2012/03/07 Javascript
jquery实现点击TreeView文本父节点展开/折叠子节点
2013/01/10 Javascript
利用函数的惰性载入提高javascript代码执行效率
2014/05/05 Javascript
简介AngularJS的视图功能应用
2015/06/17 Javascript
jQuery实现的倒计时效果实例小结
2016/04/16 Javascript
Nodejs抓取html页面内容(推荐)
2016/08/11 NodeJs
js判断是否为空和typeof的用法(详解)
2016/10/07 Javascript
Jquery删除css属性的简单方法
2016/12/04 Javascript
史上最全JavaScript常用的简写技巧(推荐)
2017/08/17 Javascript
Vue.js组件通信的几种姿势
2017/10/23 Javascript
如何使用proxy实现一个简单完整的MVVM库的示例代码
2019/09/17 Javascript
[01:04:14]VP vs TNC 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
[01:18:45]DOTA2-DPC中国联赛 正赛 DLG vs Dragon BO3 第三场2月1日
2021/03/11 DOTA
python多线程编程方式分析示例详解
2013/12/06 Python
python列表操作使用示例分享
2014/02/21 Python
用map函数来完成Python并行任务的简单示例
2015/04/02 Python
Python中title()方法的使用简介
2015/05/20 Python
Python简单检测文本类型的2种方法【基于文件头及cchardet库】
2016/09/18 Python
Python 十六进制整数与ASCii编码字符串相互转换方法
2018/07/09 Python
python enumerate内置函数用法总结
2020/01/07 Python
python实现手势识别的示例(入门)
2020/04/15 Python
使用Python matplotlib作图时,设置横纵坐标轴数值以百分比(%)显示
2020/05/16 Python
python asyncio 协程库的使用
2021/01/21 Python
CSS3媒体查询(Media Queries)介绍
2013/09/12 HTML / CSS
美国汽配连锁巨头Pep Boys官网:轮胎更换、汽车维修服务和汽车零部件
2017/01/14 全球购物
戴尔美国官方折扣店:Dell Outlet
2018/02/13 全球购物
洗煤厂厂长岗位职责
2014/01/03 职场文书
幼儿园中班教学反思
2014/02/10 职场文书
公司领导班子群众路线四风问题对照检查材料
2014/10/02 职场文书
table设置超出部分隐藏,鼠标移上去显示全部内容的方法
2022/12/24 HTML / CSS