javascript字符串拼接的问题效率问题,第一种方式:+=;第二种方式:Array.push("");Array.join("");

不喜欢吃素的菜鸟 发布于 2013/05/10 12:21
阅读 678
收藏 0

<html>
    <head>
        <title>字符串性能测试</title>
        <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
        <script>
            function test1(){
                var date1 = new Date();
                var str1 = "";
                for(var i = 0; i < 5000000; i++){
                    str1 += i;
                }
                var date2 = new Date();
                document.getElementById("div1").innerHTML += date2.getTime() - date1.getTime();
                
                date1 = new Date();
                var str2 = new Array();
                for(var i = 0; i < 5000000; i++){
                    str2.push(i);
                }
                str2.join("");
                date2 = new Date();                
                document.getElementById("div2").innerHTML += date2.getTime() - date1.getTime();
            }
            
            window.onload = function (){
                test1();
            }
        </script>
    </head>
    <body>
        <div id="div1">+=:</div>
        <div id="div2">Array.join(""):</div>
    </body>
</html>


字符串性能测试

+=:
Array.join(""):
上面代码: 1. 弄到ie6运行,+=直接悲剧了; 2. ie8下,在循环5W次,Array.push()方式所用时间大概是+=的2倍;50W下,+=所用时间稍微比Array快,很少次数Array快;500W次,ie8直接提示停止运行脚本。 3. firefox 50W、500W下,都感觉性能差别不大,500W次下,Array有时直接不会显示连时间都不会显示。 测试的只是简单的运行页面,还开了很多东西。 电脑信息: 电脑型号 X86 兼容 台式电脑 操作系统 Windows XP 专业版 32位 SP3 ( DirectX 9.0c ) 处理器 英特尔 Core i3 540 @ 3.07GHz 主板 华硕 P7H55-M PLUS (英特尔 H55 芯片组) 内存 4 GB ( 金士顿 DDR3 1333MHz ) 主硬盘 希捷 ST31000528AS ( 1 TB / 7200 转/分 ) 显卡 Nvidia GeForce GT 240 ( 1 GB / 七彩虹 ) 显示器 联想 LEN1152 L197 Wide ( 19.1 英寸 ) 声卡 威盛 VIA @ 英特尔 5 Series/3400 Series Chipset 高保真音频 网卡 瑞昱 RTL8168D(P)/8111D(P) PCI-E Gigabit Ethernet NIC / 华硕 电脑信息:
加载中
0
Narky
Narky

现代的浏览器都已经对string部分做过优化,当然不包括IE系

所以,你想说什么?

Narky
Narky
回复 @ybl_rs : 不追求性能极致的话,确实不用考虑太多
不喜欢吃素的菜鸟
不喜欢吃素的菜鸟
只想说,+=速度还是蛮快的,像我平常的使用,可以使用+=就是了,方便快捷速度也还可以。
0
sjunjun
sjunjun

ie6和ie7里,必须用join,性能会成数量级提升,因为用+=会产生严重的性能问题,每次+=的结果都会产生资源消耗!

除去ie6和ie7,用+=总比join方式高效.

不喜欢吃素的菜鸟
不喜欢吃素的菜鸟
哎,那天写完java代码,然后去写javascript代码,发现javascript代码居然没效果,具体我忘记是怎么写的了,大概是这样的。 java: private void test1(StringBuffer sb){sb.append("1");} javascript: function test1(arr){arr.push("1");}
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部