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的使用,对 ...
随机推荐
- Django之真正创建一个django项目
真正创建一个django项目 1 创建Django项目 :new-project 2 创建APP : python manager.py startapp app01 3 setting 配 ...
- SQL中的 group by 1, order by 1 语句
看到group by 1,2 和 order by 1, 2.看不懂,google,搜到了Stack Overflow 上有回答 What does SQL clause “GROUP BY 1” m ...
- mybatis源码解析4---Configuration解析
Configuration类解析 Configuration类位于mybatis包的org.apache.ibatis.session目录下,是mybatis的全局变量,属性就是对应于mybatis的 ...
- 转:MD5辅助类
public class MD5Helper { private static MD5 md5 = new MD5CryptoServiceProvider(); private static str ...
- 阿里云自定义镜像可以免费保存,ECS实例到期后自定义镜像手动快照不会被删除
阿里云自定义镜像可以免费保存,ECS实例到期后自定义镜像手动快照不会被删除 4. ECS 实例释放后,自定义镜像是否还存在? 存在. 5. ECS 实例释放后,快照是否还存在? 保留手动快照,清除自动 ...
- Java程序员秋招面经大合集(BAT美团网易小米华为中兴等)
Cvte提前批 阿里内推 便利蜂内推 小米内推 金山wps内推 多益网络 拼多多学霸批 搜狗校招 涂鸦移动 中国电信it研发中心 中兴 华为 苏宁内推 美团内推 百度 腾讯 招商银行信用卡 招银网络科 ...
- nginx负载均衡六种策略
Nginx服务器之负载均衡策略(6种) 一.关于Nginx的负载均衡 在服务器集群中,Nginx起到一个代理服务器的角色(即反向代理),为了避免单独一个服务器压力过大,将来自用户的请求转发给不同的 ...
- ManyToManyField 增加记录
class BOMView(View): def get(self,request): obj=BOMForm() return render(request,'bom.html',{'obj':ob ...
- Golang获取int数组里的最大值和下标
package main import ( "fmt" ) func main() { //获取一个数组里最大值,并且拿到下标 //声明一个数组5个元素 ], , , ,} //假 ...
- VMware环境安装MacOS
环境: win10专业版 VMware 14 Pro 开始吧 1. 停止服务 2. 解压并管理员权限运行unlocker,目的是使得 win10 环境下的 VMWare14Pro 支持 mac 系统的 ...