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
结论:可以明显看出,重新创建对象的方法是最慢的,删除字符串和设置长度的方法差别不大.
StringBuilder的三种删除方法比较的更多相关文章
- 详解数据库三种删除方法: delete drop truncate
		Delete Delete :删除数据表中的行(可以删除某一行,也可以在不删除数据表的情况下删除所有行). 删除某一行:Delete from 数据表名称 where 列名称=值: 删除所有行:Del ... 
- 006   列表的三种删除方法 remove,pop,del
		先定义一个列表: number=[,'changhao','常浩',5.2] . remove(): number.remove('changhao')---括号内是要删除的单一值 . pop(): ... 
- 【java】StringBuilder的三种清除方法对比
		参考链接:https://blog.csdn.net/roserose0002/article/details/6972391 
- 清空StringBuilder的三种方法及效率
		清空StringBuilder的三种方法及效率 大家知道对于字符串频繁拼接是使用stringbuilder.Append方法比使用string+=方法效率高很多,但有时需要清空stringbuilde ... 
- C#使用DataSet Datatable更新数据库的三种实现方法
		本文以实例形式讲述了使用DataSet Datatable更新数据库的三种实现方法,包括CommandBuilder 方法.DataAdapter 更新数据源以及使用sql语句更新.分享给大家供大家参 ... 
- Liunx 环境下vsftpd的三种实现方法(超详细参数)
		以下文章介绍Liunx 环境下vsftpd的三种实现方法 ftp://vsftpd.beasts.org/users/cevans/vsftpd-2.0.3.tar.gz,目前已经到2.0.3版本.假 ... 
- K8S(02)管理核心资源的三种基本方法
		系列文章说明 本系列文章,可以基本算是 老男孩2019年王硕的K8S周末班课程 笔记,根据视频来看本笔记最好,否则有些地方会看不明白 需要视频可以联系我 管理k8s核心资源的三种基本方法: 目录 系列 ... 
- javase-常用三种遍历方法
		javase-常用三种遍历方法 import java.util.ArrayList; import java.util.Iterator; import java.util.List; public ... 
- JS面向对象(3) -- Object类,静态属性,闭包,私有属性, call和apply的使用,继承的三种实现方法
		相关链接: JS面向对象(1) -- 简介,入门,系统常用类,自定义类,constructor,typeof,instanceof,对象在内存中的表现形式 JS面向对象(2) -- this的使用,对 ... 
随机推荐
- requests 学习笔记
			除了get 方式外 还有post 等等 注意字典里值为 None 的键都不会被添加到 URL 的查询字符串里 import requests getpara = {"key1":& ... 
- 阻塞队列---ArrayBlockingQueue,LinkedBlockingQueue,DelayQueue源码分析
			阻塞队列和非阻塞队列阻塞队列和非阻塞队列的区别:阻塞队列可以自己阻塞,非阻塞队列不能自己阻塞,只能使用队列wait(),notify()进行队列消息传送.而阻塞队列当队列里面没有值时,会阻塞直到有值输 ... 
- bzoj4358 premu
			题目链接 莫队算法 没有用线段树,而是看了showson的并查集%%% #include<algorithm> #include<iostream> #include<c ... 
- Linux下输出 excel文件
			Linux下输出 excel文件 今日提供给产品需求,需excel文件,故总结要点如下: 1.默认间隔是space_20 2.修改为TAB \t _09 awk ' BEGIN { OFS=&quo ... 
- IDEA添加作者和时间信息
- 怎样从外网访问内网Lighttpd?
			本地安装了一个Lighttpd,只能在局域网内访问,怎样从外网也能访问到本地的Lighttpd呢?本文将介绍具体的实现步骤. 准备工作 安装并启动Lighttpd 默认安装的Lighttpd端口是80 ... 
- redis-3.2.7安装脚本
			redis-3.2.7 安装脚本 for CentOS 6.5 #!/bin/bash #Filename: inst_for_redis.sh #Version: 1.1 #Lastdate: 20 ... 
- K8S学习笔记之将Google的gcr.io、k8s.gcr.io 换为国内镜像
			0x00 添加docker官方的国内镜像 sudo tee /etc/docker/daemon.json <<-'EOF' { "registry-mirrors": ... 
- Golang操作Redis
			在系统环境下实现redis操作必须做好以下准备 一.当前系统必须下载安装redis 二.配置好GOPATH环境变量,并下载GO的redis驱动包 当做好以上准备工作时,紧接着如下 看以下要使用的驱动包 ... 
- Linux 安装 RabbitMQ 3.7.8 安装部署
			Linux 安装 rabbitmq 3.7.8 安装部署 安装 ncurses 1.安装GCC GCC-C++ Openssl等模块 yum -y install make gcc gcc-c++ k ... 
