<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>    JS中“+=”与array.join的性能测试</title>
    <style>
        #div1,#div2{width: 500px;height: 200px;margin-bottom: 30px;background:#999;overflow: auto;word-break:break-all;}
        #div2{background: #0f0;}
        #tArea1{position: absolute;right: 100px;top: 50px;width: 600px;height: 430px;font-size: 20px;resize: none;}
    </style>
    <script>
        window.onload=function(){
            var oDiv1=document.getElementById("div1");
            var oDiv2=document.getElementById("div2");
            var oDate1=new Date();
            var tmpStr="";
            for(var i=0;i<100000;i++){
                tmpStr+="'"+i+"'";
            }
            oDiv1.innerHTML=tmpStr;
            var oDate2=new Date();

var oDate3=new Date();
            var tmpArray=new Array();
            for(var j=0;j<100000;j++){
                tmpArray[j]=j;
            }
            var tmpArrayStr=tmpArray.join();
            oDiv2.innerHTML=tmpArrayStr;
            var oDate4=new Date();
            
            alert((oDate2-oDate1)+"||"+(oDate4-oDate3));
            
            /*var tmpStr="";
            console.time("计时器一");
            for(var i=0;i<100000;i++){
                tmpStr+=i+"'";
            }
            document.body.innerHTML=tmpStr;
            console.timeEnd("计时器一");*/

/*var tmpArray=new Array();
            console.time("计时器二");
            for(var j=0;j<100000;j++){
                tmpArray[j]=j;
            }
            var tmpArrayStr=tmpArray.join();
            document.body.innerHTML=tmpArrayStr;
            console.timeEnd("计时器二");*/
            
        }
        
    </script>
</head>
<body>
    <div id="div1"></div>
    <div id="div2"></div>
    <textarea id="tArea1" name="" id="" cols="30" rows="10">
        1.通过多次刷新,不管在chrome、firefox还是IE6,测试的结果都是 "array.join" 的性能比 "+=" 要好。特别是在IE6下面,要强几十倍。

2.测试的结果和鸟哥的测试结果有出入,在IE下的测试结果是一样的,但是在chrome和firefox下面,和鸟哥的测试结果刚好相反。个人猜测的原因可能是,firefox和chrome的内存

处理及GC回收机制已经改进很多,毕意鸟哥那篇是08年左右写的。。。

3.测试结论:在小数据量的字符串接连操作时,"+="和"array.join"的性能相差无几(chrome或firefox),可以随意使用哪一种方式,但是在操作大数据量的字符串连接时(>=

10000),使用"array.join"的性能优势遍体现出来了。 特别说明,在IE下面,最好使用 "array.join"的方式来拼接字符串。。
    </textarea>
</body>
</html>

+=与join的性能测试的更多相关文章

  1. SQL Server中INNER JOIN与子查询IN的性能测试

    这个月碰到几个人问我关于"SQL SERVER中INNER JOIN 与 IN两种写法的性能孰优孰劣?"这个问题.其实这个概括起来就是SQL Server中INNER JOIN与子 ...

  2. Ignite性能测试以及对redis的对比

    测试方法 为了对Ignite做一个基本了解,做了一个性能测试,测试方法也比较简单主要是针对client模式,因为这种方法和使用redis的方式特别像.测试方法很简单主要是下面几点: 不作参数优化,默认 ...

  3. spark join broadcast优化

    在大量数据中对一些字段进行关联. 举例 ipTable:需要进行关联的几千条ip数据(70k) hist:历史数据(百亿级别) 直接join将会对所有数据进行shuffle,需要大量的io操作,相同的 ...

  4. 性能测试问题_Mysql数据库服务器的CPU占用很高

    MySQl服务器CPU占用很高 1.  问题描述 一个简单的接口,根据传入的号段查询号码归属地,运行性能测试脚本,20个并发mysql的CPU就很高,监控发现只有一个select语句,且表建立了索引 ...

  5. python并发获取snmp信息及性能测试

    python & snmp 用python获取snmp信息有多个现成的库可以使用,其中比较常用的是netsnmp和pysnmp两个库.网上有较多的关于两个库的例子. 本文重点在于如何并发的获取 ...

  6. Greenplum 简单性能测试与分析

    如今,多样的交易模式以及大众消费观念的改变使得数据库应用领域不断扩大,现代的大型分布式应用系统的数据膨胀也对数据库的海量数据处理能力和并行处理能力提出了更高的要求,如何在数据呈现海量扩张的同时提高处理 ...

  7. 老李性能测试分享:可以没事代理刷榜赚外快了,poptest这是让你快速致富啊

    老李性能测试分享:可以没事代理刷榜赚外快了,poptest这是让你快速致富啊   最近学员不断面试,不时听到令人惊喜的消息,类似应届专科毕业生获得7k月薪,小美女应聘月薪11k等等,看到学员开心的笑容 ...

  8. 性能调优:mysql之left join

    poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性能测试,测试工具开发等工作为目标.如果对课程感兴趣,请大家咨询qq:908821478,咨询电话010-845052 ...

  9. EF查询百万级数据的性能测试--多表连接复杂查询

    相关文章:EF查询百万级数据的性能测试--单表查询 一.起因  上次做的是EF百万级数据的单表查询,总结了一下,在200w以下的数据量的情况(Sql Server 2012),EF是可以使用,但是由于 ...

随机推荐

  1. BZOJ 1835: [ZJOI2010]base 基站选址 [序列DP 线段树]

    1835: [ZJOI2010]base 基站选址 题目描述 有N个村庄坐落在一条直线上,第i(i>1)个村庄距离第1个村庄的距离为Di.需要在这些村庄中建立不超过K个通讯基站,在第i个村庄建立 ...

  2. eclipse的svn插件安装方式

    eclipse的插件安装一般有3种方式: 1)通过eclipse的Help/ Install New Software...中, 点击Add, 添加一个在线更新地址,如:http://subclips ...

  3. 【转】jQuery列表拖动排列-jquery list dragsort插件参数和使用方法

    转自:http://www.itokit.com/2014/0820/75058.html 我们在编辑页面元素排序的时候,我推荐使用jquery插件:dragsort. dragsort官网地址:ht ...

  4. DES加密后get获取url参数无法解密问题

    参考:http://www.cnblogs.com/lori/archive/2011/09/08/2170979.html 问题,就是URL编码问题,如果不对URL进行编码直接加码,那么在解码时,如 ...

  5. sencha touch 框架的几种核心脚本文件之间的区别

    sencha-touch-debug.js      供开发时用sencha-touch.js   供发布时用sencha-touch-all.js All     供不能使用SDK构建应用程序时,将 ...

  6. Delphi QQ表情的实现

    Delphi QQ表情的实现 QQ表情描述 蓝框 提示信息 鼠标在这个表情上面 这个表情才动 可以增加表情 表情打包 单击这个表情插入表情 关闭本窗体   主要使用Webbrowsr来实现的   -- ...

  7. git 工具

    https://www.kernel.org/pub/software/scm/git/ wget https://www.kernel.org/pub/software/scm/git/git-2. ...

  8. 自己写的demo。List<HashMap<String,Object>>=new ArrayList<HashMap<String,Object>>

    package com.pb.collection; import java.util.ArrayList; import java.util.HashMap; import java.util.It ...

  9. (转)基于PHP的cURL快速入门

    1. 原文:基于PHP的cURL快速入门 英文原文:http://net.tutsplus.com/tutorial ... for-mastering-curl/ 原文作者:Burak Guzel ...

  10. jdbc - Insert 'Date' value in PreparedStatement

    “preparedStatement.setDate()”方法接受的是 'java.sql.Date' 类型的参数,而我们一般格式化日期所使用的是'java.util.Date'中的'SimpleDa ...