分别用一千万次循环来比较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. Hive分区表新增字段及修改表名,列名,列注释,表注释,增加列,调整列顺序,属性名等操作

    一.Hive分区表新增字段 参考博客:https://blog.csdn.net/yeweiouyang/article/details/44851459 二.Hive修改表名,列名,列注释,表注释, ...

  2. P1012 拼数

    P1012 拼数 输入输出样例 输入样例 3 13 312 343 输出样例 34331213 注意 当你输入: 6321 32 407 135 13 217 应该输出: 40732321217135 ...

  3. C++ STL--顺序容器(vector)

    STL(标准模板库) 一套功能强大的 C++ 模板类,提供了通用的模板类和函数,这些模板类和函数可以实现多种流行和常用的算法和数据结构,如向量.链表.队列.栈. C++标准模板库的核心包含以下组件: ...

  4. C调用java JNI_CreateJavaVM只能调用成功一次

    https://bbs.csdn.net/topics/392264971 再使用c语言调用java代码的时候,选择使用JNI,根据网上的提示已经能够正常跑了,int mask_name( char* ...

  5. 启动项详解和更改deepin启动内核的方法

    内容来自网上查找和总结以及自己的尝试 boot里面的启动项是根据其它文件生成的,如果改boot里面,会在你更新grub后再次回到原来的状态.(之后 我(有显卡驱动问题的用户)通过在开机时选择系统页面按 ...

  6. php 使用fileupload上传多张图片,压缩包

    test.php <!DOCTYPE html> <html lang="en"> <head> <meta charset=" ...

  7. 【题解】Luogu P4391 [BOI2009]Radio Transmission 无线传输

    原题传送门 这题需要用到kmp匹配 推导发现: 设循环节的长度为x,那么kmp数组前x个都是0,后面kmp[x+n]=n 先求出kmp数组 答案实际就是len-kmp[len] #include &l ...

  8. Huffman Implementation with Python

    Huffman Implementation with Python 码表 Token Frequency a 10 e 15 i 12 s 3 t 4 space 13 n 1 生成 Huffman ...

  9. 细数php里的那些“坑”

    Part 1 Grammer 尽管PHP的语法已经很松散,写起来很“爽”.但是对于学过 Java 的“完全面向对象程序员“来说,PHP程序设计语言里,还是有一些的坑的.下面请让我来盘点一下. Pars ...

  10. Android之socket客户端

    接收数据不要用readline(),用read() Socket mSocket = new Socket("192.168.1.100", 8888); DataInputStr ...