分别用一千万次循环来比较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

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

StringBuilder的三种删除方法比较的更多相关文章

  1. 详解数据库三种删除方法: delete drop truncate

    Delete Delete :删除数据表中的行(可以删除某一行,也可以在不删除数据表的情况下删除所有行). 删除某一行:Delete from 数据表名称 where 列名称=值: 删除所有行:Del ...

  2. 006 列表的三种删除方法 remove,pop,del

    先定义一个列表: number=[,'changhao','常浩',5.2] . remove(): number.remove('changhao')---括号内是要删除的单一值 . pop(): ...

  3. 【java】StringBuilder的三种清除方法对比

    参考链接:https://blog.csdn.net/roserose0002/article/details/6972391

  4. 清空StringBuilder的三种方法及效率

    清空StringBuilder的三种方法及效率 大家知道对于字符串频繁拼接是使用stringbuilder.Append方法比使用string+=方法效率高很多,但有时需要清空stringbuilde ...

  5. C#使用DataSet Datatable更新数据库的三种实现方法

    本文以实例形式讲述了使用DataSet Datatable更新数据库的三种实现方法,包括CommandBuilder 方法.DataAdapter 更新数据源以及使用sql语句更新.分享给大家供大家参 ...

  6. Liunx 环境下vsftpd的三种实现方法(超详细参数)

    以下文章介绍Liunx 环境下vsftpd的三种实现方法 ftp://vsftpd.beasts.org/users/cevans/vsftpd-2.0.3.tar.gz,目前已经到2.0.3版本.假 ...

  7. K8S(02)管理核心资源的三种基本方法

    系列文章说明 本系列文章,可以基本算是 老男孩2019年王硕的K8S周末班课程 笔记,根据视频来看本笔记最好,否则有些地方会看不明白 需要视频可以联系我 管理k8s核心资源的三种基本方法: 目录 系列 ...

  8. javase-常用三种遍历方法

    javase-常用三种遍历方法 import java.util.ArrayList; import java.util.Iterator; import java.util.List; public ...

  9. JS面向对象(3) -- Object类,静态属性,闭包,私有属性, call和apply的使用,继承的三种实现方法

    相关链接: JS面向对象(1) -- 简介,入门,系统常用类,自定义类,constructor,typeof,instanceof,对象在内存中的表现形式 JS面向对象(2) -- this的使用,对 ...

随机推荐

  1. Linux基础命令---防火墙iptables

    iptables iptables指令用来设置Linux内核的ip过滤规则以及管理nat功能.iptables用于在Linux内核中设置.维护和检查IPv4数据包过滤规则表.可以定义几个不同的表.每个 ...

  2. AtCoder Beginner Contest 086 (ABCD)

    A - Product 题目链接:https://abc086.contest.atcoder.jp/tasks/abc086_a Time limit : 2sec / Memory limit : ...

  3. 前端框架VUE----指令

    一.什么是VUE? 它是构建用户界面的JavaScript框架(让它自动生成js,css,html等) 二.怎么使用VUE? 1.引入vue.js 2.展示HTML <div id=" ...

  4. js中使用0 “” null undefined {}需要注意

    注意:在js中0为空(false) ,代表空的还有“”,null ,undefined: 如果做判断if(!上面的四种值):返回均为false console.log(!null);// true c ...

  5. The Little Prince-12/01

    The Little Prince-12/01 The people have no imagination. They repeat whatever one says to them… On my ...

  6. django ORM聚合函数

    在Django中,聚合函数是通过aggregate方法实现的,aggregate方法返回的结果是一个字典 在使用时需要先导入模块from django.db.models import Count,A ...

  7. 利用cgi编程实现web版man手册

    董老师前几天给我们布置了3道作业,第三道作业是cgi程序设计. 题目: web服务器cgi接口功能的实现 要求: 能调用cgi程序并得到返回结果: cgi程序能接受参数并得到返回结果: 使用两种或以上 ...

  8. Eureka-zookeeper的服务发现替代方案

    参考: https://my.oschina.net/thinwonton/blog/1622905 http://www.open-open.com/lib/view/open14269407225 ...

  9. 【题解】Luogu P2146 [NOI2015]软件包管理器

    题面:https://www.luogu.org/problemnew/lists?name=2146 这道题要用树链剖分,我博客里有对树链剖分的详细介绍 这道题就是树链剖分的模板,详细解释见程序. ...

  10. 【TensorFlow】tf.nn.max_pool实现池化操作

    max pooling是CNN当中的最大值池化操作,其实用法和卷积很类似 有些地方可以从卷积去参考[TensorFlow]tf.nn.conv2d是怎样实现卷积的? tf.nn.max_pool(va ...