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实现兼容IE7的类库 IE7_0_9.zip提供下载
Aug 08 Javascript
js innerHTML 的一些问题的解决方法
Jun 22 Javascript
在jQuery中 常用的选择器介绍
Apr 16 Javascript
Flex通过JS获取客户端IP和计算机名的实例代码
Nov 21 Javascript
基于jquery实现人物头像跟随鼠标转动
Aug 23 Javascript
基于Angularjs实现分页功能
May 30 Javascript
Vue 父子组件、组件间通信
Mar 08 Javascript
JavaScript设计模式之建造者模式实例教程
Jul 02 Javascript
vue实现element表格里表头信息提示功能(推荐)
Nov 20 Javascript
node.js基于dgram数据报模块创建UDP服务器和客户端操作示例
Feb 12 Javascript
ESLint 是如何检查 .vue 文件的
Nov 30 Vue.js
JavaScript canvas实现雨滴特效
Jan 10 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网页游戏学习之Xnova(ogame)源码解读(十四)
2014/06/26 PHP
destoon实现会员商铺中指定会员或会员组投放广告的方法
2014/08/21 PHP
用 Composer构建自己的 PHP 框架之使用 ORM
2014/10/30 PHP
在Linux系统下一键重新安装WordPress的脚本示例
2015/06/30 PHP
基于Laravel5.4实现多字段登录功能方法示例
2017/08/11 PHP
Yii 使用intervention/image拓展实现图像处理功能
2019/06/22 PHP
TP框架实现上传一张图片和批量上传图片的方法分析
2020/04/23 PHP
又一个小巧的图片预加载类
2007/05/05 Javascript
深入分析Javascript跨域问题
2015/04/17 Javascript
Node.js插件安装图文教程
2016/05/06 Javascript
jQuery+CSS3+Html5实现弹出层效果实例代码(附源码下载)
2016/05/16 Javascript
原生javascript移动端滑动banner效果
2017/03/10 Javascript
angular.js+node.js实现下载图片处理详解
2017/03/31 Javascript
JQuery判断正整数整理小结
2017/08/21 jQuery
原生javascript实现的全屏滚动功能示例
2017/09/19 Javascript
JavaScript捕捉事件和阻止冒泡事件实例分析
2018/08/03 Javascript
使用ECharts实现状态区间图
2018/10/25 Javascript
JS使用Prim算法和Kruskal算法实现最小生成树
2019/01/17 Javascript
微信小程序时间标签和时间范围的联动效果
2019/02/15 Javascript
微信小程序绑定手机号获取验证码功能
2019/10/22 Javascript
学习python处理python编码问题
2011/03/13 Python
python模拟登陆阿里妈妈生成商品推广链接
2014/04/03 Python
Python利用ElementTree模块处理XML的方法详解
2017/08/31 Python
Python3 处理JSON的实例详解
2017/10/29 Python
python中的随机函数小结
2018/01/27 Python
PyQt5每天必学之QSplitter实现窗口分隔
2018/04/19 Python
pandas 小数位数 精度的处理方法
2018/06/09 Python
Python数据可视化之画图
2019/01/15 Python
pandas 数据索引与选取的实现方法
2019/06/21 Python
python opencv实现gif图片分解的示例代码
2019/12/13 Python
HTML5逐步分析实现拖放功能的方法
2020/09/30 HTML / CSS
MYSQL基础面试题
2012/05/13 面试题
工作自荐信
2013/12/11 职场文书
《要下雨了》教学反思
2014/02/17 职场文书
军事理论课感想
2015/08/11 职场文书
2015年十月一日放假通知
2015/08/18 职场文书