`
kacakong
  • 浏览: 25375 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Javascript中字符串相加和Array.join的性能对比

    博客分类:
  • Ajax
阅读更多

 

网上的文章,有的说字符串相加快,有的说用Array.join做一个模拟的StringBuffer快,还是实际写个实例试试把

 

function CompareTime(){
    var d1=new Date();
    var str="";
    var i;
    for(i=0;i<1000000;i++)
    {
        str+="text";
    }
    
    var d2=new Date();  
    document.writeln("concatenation with plus:" +(d2.getTime()-d1.getTime())+"ms"+"<br/>");
    
    var oArray=new Array;
    d1=new Date();
    for(i=0;i<1000000;i++){
        oArray.push("text");
    }
    var sResult=oArray.join("");
    d2= new Date();   
    document.writeln("oncatenation with Array:"+(d2.getTime()-d1.getTime())+"ms");
}

 

 

 

1万次循环执行结果:

FireFox3
concatenation with plus:6ms
oncatenation with Array:7ms
 

 

Chrome
concatenation with plus:1ms
oncatenation with Array:3ms

 

 

IE6 写道
concatenation with plus:171ms
oncatenation with Array:32ms
 

 

100万次循环执行结果

FireFox3
concatenation with plus:454ms
oncatenation with Array:521ms

 

Chrome
concatenation with plus:483ms
oncatenation with Array:543ms

 

 

IE6 写道
浏览器无响应,根本出不了结果
 

结果:在FireFox和 Chrome 浏览器中,字符串相加速度更快,在IE6中,则是Array.join更快,不过总的来说IE6的解析性能真是太差了,在循环达到10万次以上时,就开始 无响应了。BS一下。 没有测试过IE7,IE8, 有兴趣的可以测试一下把结果告知。

1
1
分享到:
评论
1 楼 jsdit 2010-12-17  
使用IE8进行测试。
执行完plus后,IE8显示plus执行结果,并提示接下来的JS脚本造成IE运行缓慢,询问是否继续执行。点击继续执行后,IE8执行结果如下:

concatenation with plus:391ms
oncatenation with Array:1265ms

相关推荐

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

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

    JavaScrip笔试题.doc

    19. **混合类型运算**:在JavaScript中,数字与字符串相加会将数字转换为字符串进行拼接,而除法操作则会进行浮点数运算。 20. **String对象的indexOf()方法**:`indexOf()`用于查找子字符串首次出现的位置,从0...

    网页基础:第次课JavaScript对象优秀PPT.ppt

    当尝试将数字与字符串相加,如`alert(10 + "30")`,JavaScript会将数字转换为字符串,然后拼接,因此输出为"1030"。 将字符串转换为整数,可以使用`parseInt()`或`Number()`函数。例如: ```javascript var str = ...

    javascript:和精通之差一步之遥的人

    8. **字符串相加**:在JavaScript中,两个字符串可以通过`+`运算符连接,如`var myString = "String1" + "String2"`。 9. **字符串搜索**:`search()`方法用于查找字符串中的子串,返回第一个匹配项的索引,如`var ...

    js代码-JS 两个字符串算法题

    在JavaScript编程中,...通过这些字符串算法题的实践,开发者不仅可以提升对JavaScript字符串操作的掌握,还能锻炼到逻辑思维和问题解决能力。在实际项目中,这些技能会非常实用,尤其是在网页开发、数据分析等领域。

    如何在C#中连接两个字符串并创建现有变量? 看到例子了吗?

    1. **使用`+`运算符**:这是最直观的方法,可以直接将两个字符串相加。例如,`string str1 = "Hello"; string str2 = "World"; string result = str1 + " " + str2;` 这会得到结果"Hello World"。然而,频繁使用`+`...

    北大青鸟HTML教程

    2. **数据类型转换**:当你尝试将数字与字符串相加时,JavaScript会自动尝试将其转换为字符串。因此,`alert(10 + "30")`的结果会在浏览器弹出一个警告框,显示字符串"1030",因为数字10被转换为字符串并与"30"连接...

    javascript文档

    indexOf 方法 返回在 String 对象中第一次出现子字符串的字符位置。 不相等运算符 (!=) 比较两个表达式,看是否不相等。 Infinity 属性 返回 Number.POSITIVE_INFINITY 的初始值。 input 属性 返回进行查找的...

    微软JavaScript手册

    lastIndex 属性 返回在字符串中找到的最后一个成功匹配的字符位置。 lastIndexOf 方法 返回在 String 对象中最后出现子字符串的位置。 lastMatch 属性 ($) 从任何正则表达式搜索中返回最后匹配的字符。 lastParen...

    JS基础练习题

    - **答案解析**: 在字符串比较中,“12”大于“9”。 - **答案**: A.true **17. JavaScript内置对象和方法** - **知识点**: 内置对象和方法。 - **答案解析**: `setInterval`会周期性地调用一个函数或执行某段代码...

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

    例如,数字和字符串相加会先将数字转换为字符串再进行连接。 接下来,我们看看短线连接在数组中的应用。虽然数组的默认连接方法是使用`join()`函数,但通过"+"运算符也能实现类似功能: ```javascript let arr = ...

    JS数组求和的常用方法总结【5种方法】

    尽管这种方法简洁,但由于安全问题和性能原因,不推荐在实际项目中使用。 ```javascript function sum(arr) { return eval(arr.join("+")); } ``` 以上五种方法各有优劣。递归和forEach方法较为直观,但可能...

    JS数组求和的常用方法实例小结

    - **《JavaScript字符与字符串操作技巧总结》** - **《JavaScript遍历算法与技巧总结》** - **《JavaScript排序算法总结》** - **《JavaScript查找算法技巧总结》** - **《JavaScript数学运算用法总结》** - **...

    js中prototype用法详细介绍

    JavaScript处理字符串时,通常把全角和半角字符都视作一个字符,这在处理中英文混排的文本时可能造成问题。借助prototype,我们可以通过***Length方法来弥补这个不足: ```*** ***Length = function() { var arr = ...

Global site tag (gtag.js) - Google Analytics