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 自制滚动条的小例子
Mar 16 Javascript
如何从jQuery的ajax请求中删除X-Requested-With
Dec 11 Javascript
JavaScript获取网页、浏览器、屏幕高度和宽度汇总
Dec 18 Javascript
浅谈JavaScript的事件
Feb 27 Javascript
IE8下jQuery改变png图片透明度时出现的黑边
Aug 30 Javascript
JS简单实现String转Date的方法
Mar 02 Javascript
JS实现table表格数据排序功能(可支持动态数据+分页效果)
May 26 Javascript
JavaScript知识点总结(五)之Javascript中两个等于号(==)和三个等于号(===)的区别
May 31 Javascript
JavaScript操作表单实例讲解(上)
Jun 20 Javascript
利用fecha进行JS日期处理
Nov 21 Javascript
jquery实现侧边栏左右伸缩效果的示例
Dec 19 jQuery
vue 开发之路由配置方法详解
Dec 02 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写的MySQL数据库用户认证系统代码
2007/03/22 PHP
PHP实现递归复制整个文件夹的类实例
2015/08/03 PHP
php实现基于pdo的事务处理方法示例
2017/07/21 PHP
yii2多图上传组件的使用教程
2018/05/10 PHP
jquery 无限级联菜单案例分享
2013/03/26 Javascript
Extjs改变树节点的勾选状态点击按钮将复选框去掉
2013/11/14 Javascript
如何正确使用javascript 来进行我们的程序开发
2014/06/23 Javascript
JavaScript中的闭包
2016/02/24 Javascript
JavaScript实现设计模式中的单例模式的一些技巧总结
2016/05/17 Javascript
一个非常好用的文字滚动的案例,鼠标悬浮可暂停[两种方案任选]
2016/12/01 Javascript
vue2笔记 — vue-router路由懒加载的实现
2017/03/03 Javascript
node.js平台下的mysql数据库配置及连接
2017/03/31 Javascript
Vue2.0 实现移动端图片上传功能
2018/05/30 Javascript
使用vue中的混入mixin优化表单验证插件问题
2019/07/02 Javascript
AntV F2和vue-cli构建移动端可视化视图过程详解
2019/10/08 Javascript
bootstrap-paginator服务器端分页使用方法详解
2020/02/13 Javascript
uin-app+mockjs实现本地数据模拟
2020/08/26 Javascript
python中元类用法实例
2014/10/10 Python
Python和JavaScript间代码转换的4个工具
2016/02/22 Python
Python爬取网易云音乐上评论火爆的歌曲
2017/01/19 Python
python绘制直线的方法
2018/06/30 Python
Python如何发布程序的详细教程
2018/10/09 Python
python如何制作缩略图
2019/04/30 Python
Python pandas.DataFrame调整列顺序及修改index名的方法
2019/06/21 Python
使用APScheduler3.0.1 实现定时任务的方法
2019/07/22 Python
解决python gdal投影坐标系转换的问题
2020/01/17 Python
基于Python绘制个人足迹地图
2020/06/01 Python
python def 定义函数,调用函数方式
2020/06/02 Python
Python 按比例获取样本数据或执行任务的实现代码
2020/12/03 Python
CSS3轻松实现圆角效果
2017/11/09 HTML / CSS
css3如何绘制一个圆圆的loading转圈动画
2018/01/09 HTML / CSS
钉钉企业内部H5微应用开发详解
2020/05/12 HTML / CSS
英国广泛的照明产品网站:Lights4living
2018/01/28 全球购物
邮政员工辞职信
2014/01/16 职场文书
个人思想政治总结
2015/03/05 职场文书
python 中[0]*2与0*2的区别说明
2021/05/10 Python