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

    SVN安装使用 获取项目 1.首先新建文件夹.如:测试项目. 2.接着鼠标右键选择:SVN Checkout/SVN 检出 3.在出行的对话框中输入仓库地址.如:svn://198.021.262/2 ...

  2. Linux基础命令---切换用户su

    su 临时切换身份到另外一个用户,使用su切换用户之后,不会改变当前的工作目录,但是会改变一些环境变量. 此命令的适用范围:RedHat.RHEL.Ubuntu.CentOS.SUSE.openSUS ...

  3. vue-i18n国际化插件

    vue-i18n国际化插件 安装,到项目目录下执行:npm install vue-i18n 配置在src\main.js里面引入vue-i18n // 语言包插件import VueI18n fro ...

  4. Git在Eclipse中的使用

    一.把远程仓库的项目clone到eclipse里面: 最新版的Eclipse上已经集成了Git插件.所以在Eclipse中可以很方便的使用Git的功能. 在使用Git功能之前,需要先进行下简单的设置. ...

  5. [转载]谈谈document.ready和window.onload的区别

    在Jquery里面,我们可以看到两种写法:$(function(){}) 和$(document).ready(function(){}) 这两个方法的效果都是一样的,都是在dom文档树加载完之后执行 ...

  6. vue 组件之间 的通信

      组件之间通信: 同级组件之间通信:两个组件定义应用到同一个vue实例之下: <div id="webapp" class="box">    & ...

  7. MXNet官方文档中文版教程(3):神经网络图(Symbol)

    https://blog.csdn.net/qq_36165459/article/details/78394259 文档英文原版参见Symbol - Neural network graphs an ...

  8. 9i时候的块

    Header (Common and Variable) The header contains general block information, such as the block addres ...

  9. 桌面版Ubuntu系统固定IP设置和Network-manager设置

    我自己的学校是绑定MAC和IP上网的.这种方法名义上说是为了安全,不过是个搞计算机的都知道随便修改一下MAC就可以使用别人的IP了. 不提蛋疼的事情了,先来说说网络的配置吧 我用的是Ubuntu14. ...

  10. Python-制作抖音图片

    ---------------------------------------------------------------------------------------------------- ...