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 相关文章推荐
jquery 可排列的表实现代码
Nov 13 Javascript
对字符串进行HTML编码和解码的JavaScript函数
Feb 01 Javascript
锋利的jQuery 第三章章节总结的例子
Mar 23 Javascript
在百度知道团队中快速审批新成员的js脚本
Feb 02 Javascript
js window对象属性和方法相关资料整理
Nov 11 Javascript
JavaScript实现下拉菜单的显示和隐藏
Jan 05 Javascript
详解JavaScript的另类写法
Apr 11 Javascript
jQuery+Ajax实现限制查询间隔的方法
Jun 07 Javascript
ionic实现带字的toggle滑动组件
Aug 27 Javascript
详解如何去除vue项目中的#——History模式
Oct 13 Javascript
JS 验证码功能的三种实现方式
Nov 26 Javascript
javascript实现倒计时效果
Feb 17 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下批量挂马和批量清马代码
2011/02/27 PHP
解析在PHP中使用全局变量的几种方法
2013/06/24 PHP
php结合web uploader插件实现分片上传文件
2016/05/10 PHP
关于Laravel-admin的基础用法总结和自定义model详解
2019/10/08 PHP
基于php伪静态的实现方法解析
2020/07/31 PHP
jquery 上下滚动广告
2009/06/17 Javascript
js下利用控制器载入对应脚本
2010/07/17 Javascript
ajax页面无刷新 IE下遭遇Ajax缓存导致数据不更新的问题
2012/12/11 Javascript
javascript标签在页面中的位置探讨
2013/04/11 Javascript
JS控制表格实现一条光线流动分割行的方法
2015/03/09 Javascript
jQuery基本选择器(实例及表单域value的获取方法)
2016/05/20 Javascript
浅谈对Angular中的生命周期钩子的理解
2017/07/31 Javascript
vue2.x select2 指令封装详解
2017/10/12 Javascript
详解NODEJS的http实现
2018/01/04 NodeJs
vue2.0在没有dev-server.js下的本地数据配置方法
2018/02/23 Javascript
vue删除html内容的标签样式实例
2018/09/13 Javascript
基于js实现逐步显示文字输出代码实例
2020/04/02 Javascript
Vue Cli3 打包配置并自动忽略console.log语句的方法
2020/04/23 Javascript
通过实例解析vuejs如何实现调试代码
2020/07/16 Javascript
Vue+Vant 图片上传加显示的案例
2020/11/03 Javascript
vue 解决mintui弹窗弹起来,底部页面滚动bug问题
2020/11/12 Javascript
python操作MySQL数据库具体方法
2013/10/28 Python
python Django模板的使用方法(图文)
2013/11/04 Python
在dataframe两列日期相减并且得到具体的月数实例
2018/07/03 Python
解决python "No module named pip" 的问题
2018/10/13 Python
基于python进行抽样分布描述及实践详解
2019/09/02 Python
Python中的全局变量如何理解
2020/06/04 Python
Nice Kicks网上商店:ShopNiceKicks.com
2018/12/25 全球购物
初一生物教学反思
2014/01/18 职场文书
大学生毕业自我鉴定范文
2014/02/03 职场文书
初级会计求职信范文
2014/02/15 职场文书
珍惜资源保护环境的建议书
2014/05/14 职场文书
关于随地扔垃圾的检讨书
2014/09/30 职场文书
讲座开场白台词和结束语
2015/05/29 职场文书
2016猴年春节慰问信
2015/11/30 职场文书
Spring Boot实战解决高并发数据入库之 Redis 缓存+MySQL 批量入库问题
2022/02/12 Redis