zoukankan      html  css  js  c++  java
  • javascript中关于Plus(String)和StringBuilder的性能比较

    今天做了一下在客户端实现类似ASP.NET中的String与StringBuilder类的速率比较,其中StringBuilder的JS类为:

    function StringBuilder() {
        this.__strings__ = new Array;
    }

    StringBuilder.prototype.append = function (str) {
        this.__strings__.push(str);
    };

    StringBuilder.prototype.toString = function () {
        return this.__strings__.join("");
    };

    方法append与toString对StringBuilder原型做了function扩展,测试数据的JS代码为:

    var d1 = new Date();
    var str = "";
    for (var i=0; i < 10000; i++) {
        str += "leepy";
    }
    var d2 = new Date();

    document.write("通过加号串连的测试: " + (d2.getTime() - d1.getTime()) + " 毫秒");

    var sb = new StringBuilder();
    d1 = new Date();
    for (var i=0; i < 10000; i++) {
        sb.append("leepy");
    }
    var result = sb.toString();
    d2 = new Date();

    document.write("<br />通过StringBuilder串连的测试: " + (d2.getTime() - d1.getTime()) + " 毫秒");

    通过测试在IE浏览器得到如下运行数据:
    ---------------------------------------------
    通过加号串连的测试: 1022 毫秒
    通过StringBuilder串连的测试: 110 毫秒
    ---------------------------------------------
    多测试几次,可以发现前者总是远大于后者,说明后者性能更好。

    但是,在最近的FireFox版本下测试数据发现前者会小于后者,但是相差不大,看上去像FF存在String串连的问题,比如说FireFox 1.0 以及版本之后。我也不知道为什么,不知道是不是FF浏览器内核跟IE内核有所区别的一个问题所在!

  • 相关阅读:
    php代码中注释的含义
    MySql-count(*)与count(id)与count(字段)之间的执行结果和性能分析
    mysql通配符进行模糊查询
    我的娃,我的宝贝
    Yii 2.0 query模式语法
    Yii 2.0版本调试输出SQL语句
    mysql高效率随机获取n条数据写法
    mysql语句中判断是否包含某字符串的方法
    应该让老婆多休息
    win10常用快捷键总结
  • 原文地址:https://www.cnblogs.com/liping13599168/p/907334.html
Copyright © 2011-2022 走看看