zoukankan      html  css  js  c++  java
  • StringBuilder的三种删除方法比较

    分别用一千万次循环来比较StringBuilder的三种删除方法所用时间

    未避免偶然性,再循环一百次来比较总时间

    --主类

    public class StringBuilderRemove {
      public long newProject;//重新创建对象循环一千万次所用时间
      public long delete;//删除字符串循环一千万次所用时间
      public long updateLength;//修改长度循环一千万次所用时间

      public void test() {

        //第一种,新创建一个对象
        long startTimeA = System.currentTimeMillis();
        StringBuilder sb = null;
        for (int i = 1; i <= 10000000; i++) {
          sb = new StringBuilder();
          sb.append("AAAAAAA");
          sb.append("BBBBBBB");
          sb.append("CCCCCCC");
          sb.append("DDDDDDD");
          sb.append("EEEEEEE");
          sb.append("FFFFFFF");
          sb.append("GGGGGGG");
          String a = sb.toString();
        }
        this.newProject = System.currentTimeMillis() - startTimeA;//new新对象所花时间

        //第二种,删除字符串
        long startTimeB = System.currentTimeMillis();

        for (int i = 1; i <= 10000000; i++) {
          sb.delete(0, sb.length());
          sb.append("AAAAAAA");
          sb.append("BBBBBBB");
          sb.append("CCCCCCC");
          sb.append("DDDDDDD");
          sb.append("EEEEEEE");
          sb.append("FFFFFFF");
          sb.append("GGGGGGG");
          String a = sb.toString();
        }
        this.delete = System.currentTimeMillis() - startTimeB;//删除字符串所花时间

        //第三种,设置长度
        long startTimeC = System.currentTimeMillis();
        for (int i = 1; i <= 10000000; i++) {
          sb.setLength(0);
          sb.append("AAAAAAA");
          sb.append("BBBBBBB");
          sb.append("CCCCCCC");
          sb.append("DDDDDDD");
          sb.append("EEEEEEE");
          sb.append("FFFFFFF");
          sb.append("GGGGGGG");
          String a = sb.toString();
        }
        this.updateLength = System.currentTimeMillis() - startTimeC;//修改字符串长度所花时间
    }

    --测试类

    public class Main {

      public static void main(String[] args) {
        StringBuilderRemove sbr = new StringBuilderRemove();
        long a = 0;
        long b = 0;
        long c = 0;
        for (int i = 0; i < 100; i++) {
        sbr.test();
        a += sbr.newProject;
        b += sbr.delete;
        c += sbr.updateLength;
        }
        System.out.println(a);
        System.out.println(b);
        System.out.println(c);
      }

    }

    运行结果:

    168046
    95123
    93593

    结论:可以明显看出,重新创建对象的方法是最慢的,删除字符串和设置长度的方法差别不大.

  • 相关阅读:
    算法---十大经典排序算法
    算法---待整理
    iOS面试题整理---[难度]***
    spring mvc(注解)上传文件的简单例子
    面试感悟:3年工作经验程序员应有的技能
    一个 IT 青年北漂四年的感悟
    成为更优秀程序员的关键:更多的阅读
    数组参数 有params 区别
    对C# 集合类的总结
    c#前缀
  • 原文地址:https://www.cnblogs.com/goujh/p/8309447.html
Copyright © 2011-2022 走看看