`

JS中三种字符串连接方式及其性能比较

阅读更多

工作中经常会碰到要把2个或多个字符串连接成一个字符串的问题,在JS中处理这类问题一般有三种方法,这里将它们一一列出顺便也对它们的性能做个具体的比较。

第一种方法  用连接符“+”把要连接的字符串连起来:

str="a";
str+="b";

毫无疑问,这种方法是最便捷快速的,如果只连接100个以下的字符串建议用这种方法最方便。

 

第二种方法  以数组作为中介用 join 连接字符串:

var arr=new Array();
arr.push(a);
arr.push(b);
var str=arr.join("");

w3school 网站介绍说这种方法要比第一种消耗更少的资源,速度也更快,后面我们通过实验再验证是否是这样。

 

第三种方法  利用对象属性来连接字符串

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

分享到:
评论

相关推荐

    浅谈JS中的三种字符串连接方式及其性能比较

    本文主要探讨了三种不同的字符串连接方式,并对其性能进行了比较。这三种方法包括:直接使用连接符`+`、通过数组的`join`方法以及利用对象属性进行连接。 1. **直接使用连接符"+"**: 这是最直观且易于理解的方式...

    js两种拼接字符串的简单方法(必看).docx

    本文将详细介绍JavaScript中两种常见的字符串拼接方法及其应用场景。 #### 一、直接相加法 在JavaScript中,可以直接通过“+”运算符来拼接字符串。这种方法简单直观,易于理解。例如: ```javascript let part1 ...

    JavaScript中常见的字符串操作函数及用法汇总

    在JavaScript中,字符串是基本数据类型之一,对字符串的操作至关重要,尤其在前端开发中更是频繁出现。以下是一些常见的字符串操作函数及其用法: 1. **字符串转换**: - `toString()` 方法将非字符串类型的数据...

    字符串拼接

    字符串拼接是JavaScript编程中的一项基本技能,掌握不同的拼接方法及其适用场景对于提高程序性能至关重要。通过合理选择拼接方法,不仅可以提高代码的可读性,还能有效提升应用程序的运行效率。

    lzutf8.js:高性能Javascript字符串压缩库

    使用低端台式机和1MB字符串进行的近似测量:3-14MB / s压缩,20-120MB / s解压缩(详细基准以及与其他Javascript库的比较可以在找到)。 由于专注于时间效率,因此与LZW +熵编码等尺寸更高效的算法相比,压缩率会...

    《高性能JavaScript_编程》 PDF

    书中可能提供了一些最佳实践,如使用模板字符串、避免不必要的字符串连接等。 7. **事件循环与异步编程**:JavaScript是非阻塞的,事件循环和回调函数、Promise、async/await等异步处理机制是JavaScript性能的关键...

    测试JavaScript字符串处理性能的代码

    另一方面,`str += 'abcabc...'`利用了字符串连接操作符`+`或`.concat`。当使用`+=`时,JavaScript实际上会创建一个新的字符串对象,因为字符串在JavaScript中是不可变的。这意味着每次`+`操作都会导致新的字符串...

    JS字符串统计操作示例【遍历,截取,输出,计算】

    在JavaScript中,字符串是不可变的数据类型,这意味着你不能直接修改已存在的字符串。然而,你可以通过各种方法来处理和分析字符串。本实例中,我们主要探讨了如何进行JS字符串的遍历、截取、输出以及计算操作。让...

    js代码-算法中级:短线连接格式

    本文将深入探讨JavaScript中的短线连接(模板字符串)及其在算法中级应用中的重要性。 一、短线连接(模板字符串) 在JavaScript ES6版本之前,我们通常使用 `+` 运算符来拼接字符串,但这种方式在处理多行或包含...

    Net性能优化方法总结

    - **1.1.1.4 使用StringBuilder进行字符串连接**:相比于使用加号(+)连接字符串,使用`StringBuilder`可以显著提升性能。 - **1.1.2 不要使用空析构函数**:析构函数的存在会使得对象加入Finalize队列,即使析构...

    JavaScript性能陷阱小结(附实例说明)

    6. **使用字符串连接优化**: 避免连续的字符串相加,可以使用数组的`join()`方法来拼接字符串,这样更高效。 7. **原生操作优于函数调用**: 当有原生操作可用时,比如数组的`push`、`pop`等,优先使用这些原生...

    A9板lcd屏打印字符串(带hzk16k)和显示图片

    在本文中,我们将深入探讨如何在A9板的LCD屏幕上打印汉字字符串并显示图片,主要基于A9tiny4412开发板。A9板是一款嵌入式微控制器平台,通常用于实现各种嵌入式系统应用,如物联网设备、智能家居等。在这样的平台上...

    uniapp开发蓝牙适配佳博打印指令(esc,tsc)js

    在JavaScript中,你可能需要创建一个字符串,将TSC命令转换为ASCII字符,然后通过uni-app的蓝牙接口发送到打印机。 3. **uni-app的蓝牙接口**:uni-app提供了`wx.BluetoothAdapter`对象来处理蓝牙设备的连接、扫描...

    .NET 性能优化方法总结

    - **1.1.1.4 使用StringBuilder进行字符串连接**:使用`StringBuilder`进行字符串连接而非直接使用`+`运算符可以显著提高性能,尤其是在处理大量字符串时。 **1.1.2 不要使用空析构函数** 如果类定义了一个空析构...

    javascript使用技巧

    这种简单的字符串拼接方法是 JS 中常见的转换手段之一。 10. **字符串长度** - 使用 `length` 属性获取字符串的长度。这是非常基础且常用的功能之一。 11. **字符串拼接** - 字符与字符之间的连接使用 `+` 号...

    常用javascript小技巧

    字符串连接 使用`+`运算符可以轻松连接两个或多个字符串。例如,`"Hello, " + "World"`将返回`"Hello, World"`。 #### 11. 比较操作符 JavaScript提供了多种比较操作符,如`==`(相等)、`!=`(不等)、`&gt;`...

    ASP.NET中常用的26个优化性能方法

    在处理大量字符串操作时,使用`StringBuilder`类而非传统的字符串连接方式可以显著提高性能。 - **传统方式的问题**:使用`+`操作符进行字符串拼接会导致多次创建新的字符串对象,从而增加内存负担。 - **优化方法*...

    数据连接文件。。。。。。。。。。。

    4. **编程语言的数据库连接库**:在实际开发中,开发者会使用特定编程语言的数据库连接库,如Java的JDBC、Python的pymysql或psycopg2、Node.js的mysql2等。这些库提供了与数据连接文件交互的API,简化了连接过程。 ...

    Web开发入门系列教程

    本文将详细介绍JavaScript字符串对象及其相关知识点。 首先,了解JavaScript中的字符串是不可变的。这意味着一旦创建了一个字符串,就不能更改其内容。字符串对象提供了丰富的内置方法来处理字符串,如: 1. `...

Global site tag (gtag.js) - Google Analytics