`
wenjinglian
  • 浏览: 812396 次
  • 性别: Icon_minigender_1
  • 来自: 株洲->深圳
社区版块
存档分类
最新评论

“字符串拼接”的效率

阅读更多

 

有关JS中字符串的相关文章,现在网上大概不计其数了。这里我不想再就这个问题做过多的论述,只是对几种方式的实现在各种浏览器中的执行效率进行对比做个总结。

拼接字符串,大体分为两种方式,一种通过+号拼接(方式1),这种方式在IE6中效率是极其低下的,因此就出现了第二种方式:采用数组保存,最后通过join拼接,这种方式的效率在IE6下对比会发现速度差异非常大。此外还有很多朋友估计没有注意过,数组拼接的方式又分为两种,一种是通过push将字符串放入数组(方式2),另外一种是通过arr[arr.length]='string'的方式存入(方式3),这两种方式的性能也是有一些差异的。这样,我们发现一共是有三种不同的方式的,下面我对这三种方式在不同浏览器下的执行效率做了个对比,具体数据就不贴出来(因为每次的数据都是不同的,但执行速度的排名是比较稳定的),只对他们的执行效率做个排名。

===========================================

浏览器   方式1  方式2  方式3  引擎
google    3      2      1     AppleWebKit/525.19
safari    3      2      1     AppleWebKit/528.16
opera     1      3      2     Presto/2.1.1
ff3       1      3      2     Gecko/2009042316
ff2       1      3      2     Gecko/20081201
IE8       1      3      2     Trident/4.0
IE7       3      2      1     未知
IE6       3      2      1     未知

=============================================

浏览器在不断更新:测试数据结果不一定都正确,我测试了chrome浏览器,++的拼接是最快的。

对比可做以下简单总结:

  1. 在FF及IE8中直接用+号拼接的方式还是效率的最高的方式,其它情况下该方式是最慢的。
  2. 数组拼接的方式里arr[arr.length]=''的方式是快于push方式的。
  3. 在进行字符串拼接的时间:1要判断浏览器类型,如果是+号拼接方式快则采用+号方式直接拼接,如果是数组方式,则采用arr[arr.length]=''的方式将字符串存入数组然后再采用join的方式拼接。


最后附上测试用到得代码(注:为准确测试,在不同浏览器要修改循环次数数值)

 

<html> 
<head> 
<title>Listing 1-2</title> 
<script type="text/javascript"><!--
 
function badTest() { 
    var startTime = new Date().valueOf(); 
    var s = ""; 
    for (var i = 0; i < 100000; i++) { 
        s += "This is a test string"; 
    } 
    return new Date().valueOf() - startTime; 
} 
function goodTest() { 
    var startTime = new Date().valueOf(); 
    var stringBuffer = new Array(); 
    for (var i = 0; i < 100000; i++) { 
        stringBuffer.push("This is a test string"); 
    } 
    var s = stringBuffer.join(""); 
    return new Date().valueOf() - startTime; 
} 
function betterTest() { 
    var startTime = new Date().valueOf(); 
    var stringBuffer = new Array(); 
    for (var i = 0; i < 100000; i++) { 
        stringBuffer[stringBuffer.length] = "This is a test string"; 
    } 
    var s = stringBuffer.join(""); 
    return new Date().valueOf() - startTime; 
} 
function doTests() { 
    var htm = ""; 
    htm += "Time badTest took: " + badTest() + "<br>"; 
    htm += "Time goodTest took: " + goodTest() + "<br>"; 
    htm += "Time betterTest took: " + betterTest(); 
    htm += "<br>" + navigator.userAgent; 
    document.getElementById("result").innerHTML = htm; 
} 
 
// --></script> 
</head> 
<body> 
<a href="javascript:void(0);" mce_href="javascript:void(0);" onClick="doTests();">Click here to test</a> 
<br><br> 
<div id="result"> </div> 
</body> 
</html>

 

分享到:
评论

相关推荐

    Java字符串拼接效率测试过程解析

    Java字符串拼接效率测试过程解析 Java字符串拼接效率测试过程解析是Java开发中非常重要的一个话题。字符串拼接是Java开发中最常见的操作之一,但是不同的拼接方式对性能的影响是巨大的。本文主要介绍了Java字符串...

    字符串拼接工具

    总的来说,"字符串拼接工具"是简化字符串处理工作流程的有效辅助,它通过自动化和批量操作,节省了开发者的宝贵时间和精力,提高了工作效率。而"StrConnect"这个名字很可能就是这个工具的执行文件名,可能是一个可...

    JAVA的字符串拼接[参照].pdf

    然而,如果涉及到大量字符串拼接,特别是在循环中,应优先考虑使用`StringBuffer`或`StringBuilder`,以提高程序的运行效率。在多线程环境中,选择`StringBuffer`;而在单线程环境中,`StringBuilder`通常是更好的...

    将excal批量数据插入到postgresql数据库(目前实现字符串拼接的方式)

    在本教程中,我们将聚焦于如何将Excel数据批量导入到PostgreSQL数据库,特别关注一种常见的方法——通过字符串拼接的方式。PostgreSQL是一个功能强大的开源关系型数据库管理系统,而Excel则是广泛使用的电子表格工具...

    java中拼接字符串的5种方法效率对比

    随着项目的发展和复杂度的增加,字符串拼接的效率变得越来越重要。今天,我们将通过测试和分析,比较 Java 中 5 种不同的字符串拼接方法的效率,并探究每种方法背后的实现原理。 第一种方法:使用 + 运算符 在 Java...

    StringBuilder字符串拼接工具

    标题"StringBuilder字符串拼接工具"暗示了我们讨论的核心是关于如何利用`StringBuilder`进行高效的字符串处理。在Java程序中,当需要动态地构建字符串,尤其是在循环或者递归中,`StringBuilder`是首选工具。它的...

    C#实现字符串处理升级版帮助类cs代码

    4. **可变字符串**:C# 中的 `StringBuilder` 类能够有效处理大量字符串拼接的情况,在需要频繁修改的情况下比直接使用字符串拼接效率更高。 5. **正则表达式**:C#提供了强大的正则表达式库,可以通过正则表达式...

    字符串拼接 聚合函数.rar

    在IT领域,字符串拼接和聚合函数是编程中常见的操作,尤其在处理数据时显得尤为重要。字符串拼接是指将两个或多个字符串连接成一个新字符串的过程,而聚合函数则是在一组值上执行计算并返回单个值的函数,通常用于...

    asp字符串连接符&、多个字符串相加、字符串拼接类

    首先,ASP中的字符串连接符`&`是最基本的字符串拼接方式。当你想要将两个或更多的字符串合并成一个时,可以使用这个符号。例如: ```asp response.write "jb51.net" & "我们" ``` 上述代码会输出"jb51.net我们"。...

    c++面试字符串_C++字符串_

    在面试中,面试官可能会询问关于这些知识点的具体应用,如字符串拼接效率,字符串查找算法,内存管理策略,以及如何避免常见的字符串操作错误。理解并熟练掌握这些概念和函数,将有助于你在面试中脱颖而出。

    一个高效率的js脚本字符串构建类库函数

    JavaScript StringBuilder 是一个专门为JavaScript开发的高效字符串操作类库,它主要解决了JavaScript中字符串拼接效率低下的问题。在JavaScript中,使用加号"+"来连接多个字符串时,每次操作都会创建新的字符串对象...

    详解.NET中string与StringBuilder在字符串拼接功能上的比较

    它们在处理字符串拼接时有着显著的性能差异,了解这些差异对于编写高效的代码至关重要。 首先,`string`对象在.NET中是不可变的,这意味着一旦创建,就不能更改其内容。每次对`string`对象进行拼接操作时,都会创建...

    字符串拼接-不同方式下的性能问题纠错1

    在JavaScript编程中,字符串拼接是一项常见的操作,尤其是在处理大量数据时。然而,不同的拼接方式在性能上可能有所差异,这取决于所使用的浏览器和其内部实现。在早期的JavaScript环境中,尤其是IE7及更早版本,...

    SQL2JAVA-java字段串代码拼接小工具

    在Java中,有多种方式可以实现字符串拼接,比如使用`+`操作符,但当拼接的字符串数量较多时,这种方式的效率较低。因此,更推荐使用`StringBuffer`或`StringBuilder`类,它们提供了一种可扩展且高效的字符串操作方法...

    for循环中如何正确使用字符串拼接

    那么通过如下代码,看一下在for循环中,不同的字符串拼接方式,到底哪种效率最高?  package com.test.stringjoin; import org.apache.commons.lang3.StringUtils; public class Test { public static void main...

    JAVA字符串拼接常见方法汇总

    JAVA字符串拼接常见方法汇总 Java字符串拼接是Java编程中一个非常常见的操作,但是实现字符串拼接的方法却有多种。下面我们将详细介绍Java字符串拼接常见方法,并分析每种方法的优缺点。 一、使用“+”号连接字符...

    关于php几种字符串连接的效率比较(详解)

    php大致有三种字符串连接: 1、直接用.来进行连接。 2、用.=进行连接。 3、先压入数组,再通过join函数连接。 下面分别对这三种方法的效率进行测试: 第一种方法代码如下: &lt;?php function get_tm() { list ( ...

    python3实用编程技巧进阶(1套课程)\第4章-4 PYTHON小字符串拼接 Python课程 教程 0基础学习

    在Python中,有效且高效地进行字符串拼接可以显著提高代码的性能和可读性。 首先,我们来了解一下Python中的字符串是不可变的。这意味着一旦创建了一个字符串对象,就不能改变其内容。因此,当我们尝试对字符串进行...

    Java资深开发工程师知识体系.docx

    StringBuilder 类的字符串拼接效率比 String 类高,因为 StringBuilder 类可以避免多次字符串对象的创建和销毁。 HashMap 的实现原理 HashMap 的实现原理是基于哈希表的数据结构,使用链地址法来解决哈希冲突问题...

    CUDA程序并行实现字符串匹配的操作

    通常,可以将目标字符串和模式字符串分布在GPU的不同线程块和线程中,每个线程负责一部分匹配工作。例如,在KMP算法中,每个线程检查目标字符串的一个子串是否与模式字符串匹配。 3. **KMP算法**:KMP算法是一种...

Global site tag (gtag.js) - Google Analytics