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 调整select 位置的函数
Feb 21 Javascript
杨氏矩阵查找的JS代码
Mar 21 Javascript
javascript loadScript异步加载脚本示例讲解
Nov 14 Javascript
jQuery获得包含margin的outerWidth和outerHeight的方法
Mar 25 Javascript
基于javascript实现图片滑动效果
May 07 Javascript
移动端横屏的JS代码(beta)
May 16 Javascript
JS中作用域和变量提升(hoisting)的深入理解
Oct 31 Javascript
微信小程序实现简单input正则表达式验证功能示例
Nov 30 Javascript
Vue中JS动画与Velocity.js的结合使用
Feb 13 Javascript
优雅地使用loading(推荐)
Apr 20 Javascript
layui原生表单验证的实例
Sep 09 Javascript
js实现Element中input组件的部分功能并封装成组件(实例代码)
Mar 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使用PHPexcel导入导出数据的方法
2015/11/14 PHP
PHP 实现页面静态化的几种方法
2017/07/23 PHP
Laravel学习教程之本地化模块
2017/08/18 PHP
用document.documentElement取代document.body的原因分析
2009/11/12 Javascript
node.js中的fs.unlinkSync方法使用说明
2014/12/15 Javascript
Javascript 拖拽的一些简单的应用(逐行分析代码,让你轻松了拖拽的原理)
2015/01/23 Javascript
JQuery显示隐藏DIV的方法及代码实例
2015/04/16 Javascript
js获取当前日期时间及其它操作汇总
2015/04/17 Javascript
简单的js表格操作
2016/09/24 Javascript
JavaScript调试的多个必备小Tips
2017/01/15 Javascript
vue图片加载与显示默认图片实例代码
2017/03/16 Javascript
nodejs+websocket实时聊天系统改进版
2017/05/18 NodeJs
Three.js利用Detector.js插件如何实现兼容性检测详解
2017/09/26 Javascript
Bootstrap4如何定制自己的颜色和风格
2018/02/26 Javascript
微信小程序有旋转动画效果的音乐组件实例代码
2018/08/22 Javascript
微信小程序常用赋值方法小结
2019/04/30 Javascript
layui动态绑定事件的方法
2019/09/20 Javascript
微信小程序如何加载数据库真实数据的实现
2020/03/04 Javascript
[02:34]肉山说——泡妞篇
2014/09/16 DOTA
[01:54]TI珍贵瞬间系列(五):压力
2020/08/29 DOTA
跟老齐学Python之正规地说一句话
2014/09/28 Python
Python中用startswith()函数判断字符串开头的教程
2015/04/07 Python
使用Python的web.py框架实现类似Django的ORM查询的教程
2015/05/02 Python
python实现提取百度搜索结果的方法
2015/05/19 Python
Python使用matplotlib填充图形指定区域代码示例
2018/01/16 Python
Python拆分大型CSV文件代码实例
2019/10/07 Python
详解pyinstaller selenium python3 chrome打包问题
2019/10/18 Python
Nike瑞典官方网站:Nike.com (SE)
2018/11/26 全球购物
祖国在我心中演讲稿
2014/01/15 职场文书
大三学习计划书范文
2014/05/02 职场文书
2014离婚协议书范文
2014/09/10 职场文书
如何签定毕业生就业协议书
2014/09/28 职场文书
小马王观后感
2015/06/11 职场文书
2016关于学习党章的心得体会
2016/01/15 职场文书
springboot+zookeeper实现分布式锁
2022/03/21 Java/Android
HTML5之高度塌陷问题的解决
2022/06/01 HTML / CSS