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 相关文章推荐
Code:findPosX 和 findPosY
Dec 20 Javascript
[转]JS宝典学习笔记
Feb 07 Javascript
编写跨浏览器的javascript代码必备[js多浏览器兼容写法]
Oct 29 Javascript
JavaScript的strict模式与with关键字介绍
Feb 08 Javascript
javascript处理表单示例(javascript提交表单)
Apr 28 Javascript
基于javascript实现简单计算器功能
Jan 03 Javascript
js下将金额数字每三位一逗号分隔
Feb 19 Javascript
javascript实现滑动解锁功能
Mar 22 Javascript
基于JavaScript实现带数据验证和复选框的表单提交
Aug 23 Javascript
手把手教你写一个微信小程序(推荐)
Oct 17 Javascript
简单的React SSR服务器渲染实现
Dec 11 Javascript
解决微信小程序云开发中获取数据库的内容为空的方法
May 15 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
ThinkPHP使用UTFWry地址库进行IP定位实例
2014/04/01 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十五)
2014/06/30 PHP
yii的CURD操作实例详解
2014/12/04 PHP
怎样搭建PHP开发环境
2015/07/28 PHP
浅谈PHP命令执行php文件需要注意的问题
2016/12/16 PHP
PHP编程实现多维数组按照某个键值排序的方法小结【2种方法】
2017/04/27 PHP
在Laravel中使用MongoDB的方法示例
2019/11/11 PHP
javascript 变量作用域 代码分析
2009/06/26 Javascript
使用jQuery实现星级评分代码分享
2014/12/09 Javascript
jQuery实用技巧必备(上)
2015/11/02 Javascript
如何解决easyui自定义标签 datagrid edit combobox 手动输入保存不上
2015/12/26 Javascript
JavaScript中Array的实用操作技巧分享
2016/09/11 Javascript
JavaScript基于DOM操作实现简单的数学运算功能示例
2017/01/16 Javascript
jquery easyui DataGrid简单示例
2017/01/23 Javascript
javascript实现滑动解锁功能
2017/03/22 Javascript
js实现抽奖效果
2017/03/27 Javascript
w3c编程挑战_初级脚本算法实战篇
2017/06/23 Javascript
使用Vue实现图片上传的三种方式
2018/07/17 Javascript
bootstrap动态调用select下拉框的实例代码
2018/08/09 Javascript
vue登录页面cookie的使用及页面跳转代码
2019/07/10 Javascript
Vue组件模板的几种书写形式(3种)
2020/02/19 Javascript
[45:59]完美世界DOTA2联赛PWL S2 FTD vs GXR 第二场 11.22
2020/11/24 DOTA
利用Python绘制数据的瀑布图的教程
2015/04/07 Python
用python记录运行pid,并在需要时kill掉它们的实例
2017/01/16 Python
python 将列表中的字符串连接成一个长路径的方法
2018/10/23 Python
python开发准备工作之配置虚拟环境(非常重要)
2019/02/11 Python
解决Tensorboard可视化错误:不显示数据 No scalar data was found
2020/02/15 Python
python实现控制台输出彩色字体
2020/04/05 Python
CSS3中HSL和HSLA的简单使用示例
2015/07/14 HTML / CSS
HTML5不支持标签和新增标签详解
2016/06/27 HTML / CSS
本科毕业生的求职信范文
2013/11/20 职场文书
学习雷锋寄语大全
2014/04/11 职场文书
党员对十八届四中全会的期盼思想汇报范文
2014/10/17 职场文书
继续教育个人总结
2015/03/03 职场文书
JavaWeb Servlet开发注册页面实例
2022/04/11 Java/Android
Python FuzzyWuzzy实现模糊匹配
2022/04/28 Python