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 相关文章推荐
面向对象的编程思想在javascript中的运用上部
Nov 20 Javascript
锋利的jQuery 要点归纳(一) jQuery选择器
Mar 21 Javascript
js 页面元素的几个用法总结
Nov 18 Javascript
jquery 3D 标签云示例代码
Jun 12 Javascript
浅谈JavaScript数据类型
Mar 03 Javascript
js阻止浏览器默认行为的简单实例
May 15 Javascript
利用Vue.js+Node.js+MongoDB实现一个博客系统(附源码)
Apr 24 Javascript
微信小程序实现底部导航
Nov 05 Javascript
mpvue 页面预加载新增preLoad生命周期的两种方式
Oct 17 Javascript
vue 微信扫码登录(自定义样式)
Jan 06 Javascript
VSCode搭建Vue项目的方法
Apr 30 Javascript
JS数组去重详情
Nov 07 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 基础教程(二)
2006/10/09 PHP
Php中使用Select 查询语句的实例
2014/02/19 PHP
PHP 数组基本操作小结(推荐)
2016/06/13 PHP
Laravel 解决419错误 -ajax请求错误的问题(CSRF验证)
2019/10/25 PHP
php计数排序算法的实现代码(附四个实例代码)
2020/03/31 PHP
TopList标签和JavaScript结合两例
2007/08/12 Javascript
Prototype Number对象 学习
2009/07/19 Javascript
juqery 学习之四 筛选查找
2010/11/30 Javascript
js计算字符串长度包含的中文是utf8格式
2013/10/15 Javascript
JS动态修改图片的URL(src)的方法
2015/04/01 Javascript
JS实现统计复选框选中个数并提示确定与取消的方法
2015/07/01 Javascript
JavaScript编写推箱子游戏
2015/07/07 Javascript
Javascript的比较汇总
2016/07/25 Javascript
JavaScript的事件机制详解
2017/01/17 Javascript
node.js-v6新版安装具体步骤(分享)
2017/09/06 Javascript
Vue项目中添加锁屏功能实现思路
2018/06/29 Javascript
在vue中使用v-bind:class的选项卡方法
2018/09/27 Javascript
BootStrap modal实现拖拽功能
2018/12/01 Javascript
angular使用md5,CryptoJS des加密的方法
2019/06/03 Javascript
对Layer UI 模块化的用法详解
2019/09/26 Javascript
Python实现读取txt文件并画三维图简单代码示例
2017/12/09 Python
Python实现求一个集合所有子集的示例
2018/05/04 Python
Python单元测试与测试用例简析
2019/11/09 Python
Pytorch中的VGG实现修改最后一层FC
2020/01/15 Python
Python找出列表中出现次数最多的元素三种方式
2020/02/24 Python
linux系统下pip升级报错的解决方法
2021/01/31 Python
使用CSS3来代替JS实现交互
2017/08/10 HTML / CSS
HTML5 embed 标签使用方法介绍
2013/08/13 HTML / CSS
美国受欢迎的眼影品牌:BH Cosmetics
2016/10/25 全球购物
世界上最大的街头服饰网站:Karmaloop
2017/02/04 全球购物
挂职思想汇报
2013/12/31 职场文书
媒矿安全生产承诺书
2014/05/23 职场文书
经营目标责任书
2015/05/08 职场文书
大学新生入学感想
2015/08/07 职场文书
《乌鸦喝水》教学反思
2016/02/19 职场文书
React Hook用法示例详解(6个常见hook)
2021/04/28 Javascript