分别用一千万次循环来比较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. requests 学习笔记

    除了get 方式外 还有post 等等 注意字典里值为 None 的键都不会被添加到 URL 的查询字符串里 import requests getpara = {"key1":& ...

  2. 阻塞队列---ArrayBlockingQueue,LinkedBlockingQueue,DelayQueue源码分析

    阻塞队列和非阻塞队列阻塞队列和非阻塞队列的区别:阻塞队列可以自己阻塞,非阻塞队列不能自己阻塞,只能使用队列wait(),notify()进行队列消息传送.而阻塞队列当队列里面没有值时,会阻塞直到有值输 ...

  3. bzoj4358 premu

    题目链接 莫队算法 没有用线段树,而是看了showson的并查集%%% #include<algorithm> #include<iostream> #include<c ...

  4. Linux下输出 excel文件

    Linux下输出 excel文件 今日提供给产品需求,需excel文件,故总结要点如下: 1.默认间隔是space_20 2.修改为TAB \t _09 awk '  BEGIN { OFS=&quo ...

  5. IDEA添加作者和时间信息

  6. 怎样从外网访问内网Lighttpd?

    本地安装了一个Lighttpd,只能在局域网内访问,怎样从外网也能访问到本地的Lighttpd呢?本文将介绍具体的实现步骤. 准备工作 安装并启动Lighttpd 默认安装的Lighttpd端口是80 ...

  7. redis-3.2.7安装脚本

    redis-3.2.7 安装脚本 for CentOS 6.5 #!/bin/bash #Filename: inst_for_redis.sh #Version: 1.1 #Lastdate: 20 ...

  8. K8S学习笔记之将Google的gcr.io、k8s.gcr.io 换为国内镜像

    0x00 添加docker官方的国内镜像 sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ...

  9. Golang操作Redis

    在系统环境下实现redis操作必须做好以下准备 一.当前系统必须下载安装redis 二.配置好GOPATH环境变量,并下载GO的redis驱动包 当做好以上准备工作时,紧接着如下 看以下要使用的驱动包 ...

  10. Linux 安装 RabbitMQ 3.7.8 安装部署

    Linux 安装 rabbitmq 3.7.8 安装部署 安装 ncurses 1.安装GCC GCC-C++ Openssl等模块 yum -y install make gcc gcc-c++ k ...