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 相关文章推荐
用js判断用户浏览器是否是XP SP2的IE6
Mar 08 Javascript
js实现DIV的一些简单控制
Jun 04 Javascript
JS类定义原型方法的两种实现的区别评论很多
Sep 12 Javascript
javascript:void(0)的真正含义实例分析
Aug 20 Javascript
用JS判别浏览器种类以及IE版本的几种方法小结
Aug 02 Javascript
js模仿windows桌面图标排列算法具体实现(附图)
Jun 16 Javascript
JavaScript动态加载样式表的方法
Mar 21 Javascript
实例讲解javascript实现异步图片上传方法
Dec 05 Javascript
bootstrap select2插件用ajax来获取和显示数据的实例
Aug 09 Javascript
详解JavaScript 的执行机制
Sep 18 Javascript
原生js实现弹幕效果
Nov 29 Javascript
Ajax请求超时与网络异常处理图文详解
May 23 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 5.0创建图形的巧妙方法
2010/10/12 PHP
教你如何使用php session
2013/10/28 PHP
浅谈PHP链表数据结构(单链表)
2016/06/08 PHP
php常用字符串查找函数strstr()与strpos()实例分析
2019/06/21 PHP
js 刷新页面的代码小结 推荐
2010/04/02 Javascript
JavaScript之IE的fireEvent方法详细解析
2013/11/20 Javascript
jQuery中empty()方法用法实例
2015/01/16 Javascript
jQuery实现鼠标经过事件的延时处理效果
2020/08/20 Javascript
jQuery组件easyui对话框实现代码
2016/08/25 Javascript
jquery 多个radio的click事件实例
2016/12/03 Javascript
js实现导航吸顶效果
2017/02/24 Javascript
jQuery+ajax实现局部刷新的两种方法
2017/06/08 jQuery
JavaScript变量类型以及变量作用域详解
2017/08/14 Javascript
利用javascript如何随机生成一定位数的密码
2017/09/22 Javascript
深入理解Node module模块
2018/03/26 Javascript
vue内置组件transition简单原理图文详解(小结)
2018/07/12 Javascript
详解ES6 Fetch API HTTP请求实用指南
2018/11/14 Javascript
vue项目中引入Sass实例方法
2019/08/27 Javascript
Layui表格行工具事件与数据回填方法
2019/09/13 Javascript
微信小程序自定义模态弹窗组件详解
2019/12/24 Javascript
JS实现字体背景跑马灯
2020/01/06 Javascript
[01:15:44]首部DOTA2纪录片今日23时全网上映
2014/03/19 DOTA
在Python中用keys()方法返回字典键的教程
2015/05/21 Python
python中ASCII码和字符的转换方法
2018/07/09 Python
python 实现的发送邮件模板【普通邮件、带附件、带图片邮件】
2019/07/06 Python
基于pytorch padding=SAME的解决方式
2020/02/18 Python
Python读取文件内容为字符串的方法(多种方法详解)
2020/03/04 Python
解决Python 函数声明先后顺序出现的问题
2020/09/02 Python
莫斯科大型旅游休闲商品超市:Camping.ru
2020/09/16 全球购物
事业单位请假制度
2014/01/13 职场文书
2014年入党积极分子党课学习心得体会模板
2014/04/03 职场文书
网站创业计划书
2014/04/30 职场文书
中华美德颂演讲稿
2014/05/20 职场文书
本科毕业生自荐信
2014/05/26 职场文书
怎么写工作检讨书
2014/11/16 职场文书
java如何实现socket连接方法封装
2021/09/25 Java/Android